הודות ל-Scoped Storage, אנדרואיד 11 במכשירים מסוימים עושה את זה קצת לא נוח למחוק תמונות ב-Google Photos, אבל ייתכן שיש תיקון.
אין לנו דרך לדעת כמה מכשירים בשוק מריצים את אנדרואיד 11 מאז גוגל לא מפרסם עוד סטטיסטיקות תפוצה, אבל יש כנראה עשרות מיליונים עכשיו שחברות כמו שיאומי וסמסונג הספיקו לדחוף את העדכון ל רבים מהדגמים שלהם. אם המכשיר שלכם מריץ אנדרואיד 11 ואתם משתמשים ב-Google Photos, יש סיכוי שנתקלתם בשינוי די מעצבן בדרך שבה האפליקציה מטפלת במחיקה ושחזור של תמונות. במקום פשוט לבחור את התמונות והסרטונים שברצונך למחוק, ללחוץ על סמל פח האשפה ולאחר מכן להקיש על "הזז לאשפה", כעת תצטרך להקיש דרך הנחיה נוספת כדי לתת ל-Google Photos הרשאה למחוק או לשחזר את קבצים.
לאלו מכם שמצלמים הרבה תמונות וסרטונים, זה עשוי להיות מעצבן להעניק ל-Google Photos הרשאה למחוק או לשחזר קובץ. וכפי שצוין על ידי משטרת אנדרואיד, הקשה על כפתור נוסף היא לא הבעיה היחידה שאולי תצטרך להתמודד איתה. אם אתה משתמש ב-Google Photos במכשיר אחר וברצונך לערוך או לאשפה קובץ שהעלית מהטלפון שלך עם אנדרואיד 11, ייתכן שהאפליקציה תבקש ממך לבדוק "שינויים שאינם מסונכרנים". זה יכול להיות מעצבן במהירות אם תמונות Google ימשיכו לבקש ממך לבדוק שינויים שזה עתה ביצעת בפלטפורמה אחרת.
השלב הנוסף למחיקת או שחזור קובץ לא היה נדרש ב-Android 10, אך הוא נדרש כעת ב-Android 11 עקב האכיפה של Scoped Storage. לפני Scoped Storage, הגישה לכל ספריית האחסון החיצונית נוהלה על ידי יחיד הרשאה, מה שמקשה עליך להגביל אילו אפליקציות יכולות לגשת למסמכים הפרטיים שלך, לתמונות או סרטונים. עם אחסון בהיקף, אנדרואיד מגביל את מידת הגישה שיכולה להיות לאפליקציה לקבצים רגישים ללא הסכמה מפורשת של המשתמש. תוכל למצוא פרטים נוספים על אחסון בהיקף במאמר זה או עיין בגרפיקה של גוגל למטה לסיכום השינויים.
בזמן שהם היו עסוקים בהגבלת גישה לאחסון באנדרואיד 11, גוגל גם שיפרה ממשקי API קיימים כדי לשפר את חווית המשתמש. לדוגמה, אפליקציות הממוקדות לאנדרואיד 11 יכולות להשתמש בממשק ה-API של MediaStore כדי לאשפה קובץ במקום למחוק אותו. עם זאת, על מנת להעביר קובץ לאשפה, האפליקציה חייבת לעשות זאת לבקש מהמשתמש להעניק לו גישת כתיבה. מכיוון שרוב התמונות והסרטונים שאתה מוסיף ל-Google Photos מהטלפון שלך הגיעו מאפליקציה אחרת - כמו אפליקציית המצלמה המלאה - תמונות חייבות לבקש רשות לפני שהיא יכולה להעביר קובץ אל או ממנו אַשׁפָּה. עם זאת, תמונות Google לא מבקשת רשות לאשפה קבצים אם אתה משתמש בטלפון Pixel עם Android 11 מותקן. עם זאת, הוא מבקש אישור בעצם בכל מכשיר אחר שמריץ אנדרואיד 11, כולל רוב מכשירי סמסונג, שיאומי, OnePlus ו-ASUS. מה נותן?
הסיבה היא שאפליקציית גלריית המערכת אינה כפופה למגבלות אחסון בהיקף. כלומר, אפליקציית גלריית המניות יכולה לפתוח, לערוך או למחוק תמונות וסרטונים ללא רשות מפורשת. Google Photos מוגדרת מראש כאפליקציית גלריית המערכת בטלפונים של Pixel, אך רוב יצרני ה-OEM מגדירים מראש את אפליקציית הגלריה שלהם במקום זאת. יתר על כן, אין הגדרה הפונה למשתמש כדי לשנות את אפליקציית גלריית המערכת, אפילו לא במסך "אפליקציות ברירת המחדל" של אנדרואיד. עם זאת, שם הוא דרך נסתרת לשנות את אפליקציית גלריית המערכת, אבל יש אחת גָדוֹל אזהרה: ניתן להגדיר רק אפליקציית מערכת כאפליקציה של גלריית המערכת. זה אומר רק טלפונים זה Google Photos כבר מותקן מראש כאפליקציית מערכת יכול לנצל את הטריק הזה.
לא הרבה טלפונים עומדים בקריטריון הזה, אבל על סמך הבדיקות שלנו, נוכל לאשר זאת עובד ברוב ה-OnePlus ובחלק מהטלפונים של ASUS. שיטה זו לא עבדה על אף אחד מהטלפונים של סמסונג עליהם בדקנו אותה, והיא גם לא עבדה על Xiaomi Mi 10 Pro. אם יש לך גישת שורש או שאתה מפעיל ROM מותאם אישית, שיטה זו עשויה לפעול במכשיר שלך לאחר שתפעיל את אפליקציית Google Photos במערכת, אך בדקנו שיטה זו רק במכשירי מניות.
כיצד (אולי) להפוך את Google Photos לאפליקציית גלריית המערכת
הקרדיטים מגיעים לקיירון קווין (קוויני899 בפורומי XDA) על שיתוף הטריק הזה!
הדבר הראשון שתצטרך לעשות הוא להתקין ADB במחשב האישי שלך. יש לנו מדריך מעודכן כיצד לעשות זאת כאן. לאחר הגדרת ADB, הזן את הפקודה הבאה:
adbshellcmdroleadd-role-holderandroid.app.role.SYSTEM_GALLERYcom.google.android.apps.photos
אם אינך רואה שגיאה, כנראה שזה עבד! אתה יכול לאמת במהירות שזה עבד על ידי צילום תמונה ולאחר מכן ניסיון למחוק אותה בתמונות Google. לחלופין, אתה יכול להפעיל את הפקודה הבאה:
adb shell dumpsys role
...ובדוק אם ה"מחזיק" של "android.app.role. SYSTEM_GALLERY" הוא "com.google.android.apps.photos" (שם החבילה של Google Photos).
מה הפקודה הזו עושה?
אנדרואיד 10 הוסיף א API חדש בשם "תפקידים". כאשר לאפליקציה יש תפקיד מסוים, היא ניתנת אוטומטית לגישה להרשאות מסוימות. לדוגמה, ה תפקיד SYSTEM_GALLERY מעניק אוטומטית לאפליקציה "גישה מלאה לקריאה ולכתיבה לכל קבצי התמונות והווידאו באחסון חיצוני, כולל גישה למיקום מטא נתונים." ניתן להעניק את התפקיד SYSTEM_GALLERY רק ליישומי מערכת, ומחזיק ברירת המחדל שלו מוגדר על ידי אנדרואיד ערך תצורה "config_systemGallery." כפי שהסברנו קודם לכן, רוב יצרני ה-OEM מגדירים מראש את הערך הזה לשם החבילה המתאים להם אפליקציית גלריה משלו. לא ניתן לשנות ערך זה מבלי לשנות את המסגרת או להתקין שכבת-על, שניהם דורשים גישת שורש.
עם זאת, זה הוא אפשר להוסיף עוד אפליקציה כמחזיק בתפקיד SYSTEM_GALLERY, אבל רק אם האפליקציה הזו היא גם אפליקציית מערכת. זה אפשרי בהרבה טלפונים של OnePlus וכמה ASUS מכיוון שיצרני ה-OEM הללו התקינו את Google Photos מראש ברמת המערכת ולא ברמת המשתמש. בשל כך, אפליקציית תמונות Google כשירה לתפקיד SYSTEM_GALLERY, ואנחנו מנצלים את היתרון ממשק ה-RoleManager הנסתר של אנדרואיד כדי להעניק לו גישה להרשאות שבדרך כלל לא יכול להיות מוענק. אם תנסה להעניק את התפקיד SYSTEM_GALLERY לאפליקציה שאינה מערכת, תראה את השגיאה הבאה ב-logcat:
ERoleControllerServiceImpl: Packagedoesnotqualifyfortherole, package: com.google.android.apps.photos, role: android.app.role.SYSTEM_GALLERY
למרבה הצער, לא מצאנו דרך לעקוף את המגבלה הזו, אבל אם כן, נשתף את השיטה שלנו עם הקהילה. כמובן, אנו מעדיפים שגוגל פשוט תהפוך את התפקיד SYSTEM_GALLERY להגדרה על ידי המשתמש ולא מוגבל לבחירת ה-OEM.