Завдяки Scoped Storage Android 11 на деяких пристроях дещо незручно видаляти зображення в Google Photos, але це може бути виправлено.
Ми не можемо дізнатися, скільки пристроїв на ринку працює під керуванням Android 11 з часів Google більше не публікує статистику поширення, але зараз, ймовірно, є десятки мільйонів, яким такі компанії, як Xiaomi та Samsung, встигли просунути оновлення багато їхніх моделей. Якщо ваш пристрій працює під керуванням Android 11 і ви використовуєте Google Photos, є ймовірність, що ви зіткнулися з досить неприємною зміною в тому, як програма обробляє видалення та відновлення зображень. Замість того, щоб просто вибирати зображення та відео, які потрібно видалити, натисніть значок кошика, а потім натисніть «перемістити у кошик", тепер вам потрібно буде торкнутися додаткового запиту, щоб надати Google Photos дозвіл на видалення або відновлення вашого файли.
Тих із вас, хто робить багато фотографій і відео, може дратувати необхідність надавати Google Фото дозвіл на видалення або відновлення файлу. І як зазначив
AndroidPolice, натискання додаткової кнопки — це не єдина проблема, з якою вам доведеться мати справу. Якщо ви використовуєте Google Photos на іншому пристрої та хочете відредагувати або видалити файл, який ви завантажили зі свого телефону під керуванням Android 11, програма може попросити вас переглянути «несинхронізовані зміни». Це може швидко дратувати, якщо Google Photos постійно просить вас переглянути зміни, які ви щойно зробили на іншій платформі.Додатковий крок для видалення або відновлення файлу не був потрібним в Android 10, але тепер він потрібен в Android 11 через примусове сховище обмеженого обсягу. До Scoped Storage доступом до всього каталогу зовнішнього сховища керував один дозволу, що ускладнює для вас обмеження, які програми можуть отримати доступ до ваших особистих документів, зображень або відео. Завдяки Scoped Storage Android обмежує доступ програми до конфіденційних файлів без явної згоди користувача. Ви можете знайти додаткові відомості про Scoped Storage в цій статті або подивіться на графік Google нижче, щоб переглянути підсумок змін.
Поки вони були зайняті обмеженням доступу до сховища в Android 11, Google також вдосконалювала існуючі API, щоб покращити взаємодію з користувачем. Наприклад, програми, орієнтовані на Android 11, можуть використовувати MediaStore API, щоб викинути файл у смітник, а не видалити його. Однак, щоб перемістити файл у кошик, додаток має це зробити запропонувати користувачеві надати йому доступ для запису. Оскільки більшість зображень і відео, які ви додаєте в Google Photos зі свого телефону, надходять із іншої програми — як-от стандартна програма камери — Photos має запитувати дозвіл, перш ніж перемістити файл у або з сміття. Однак Google Photos не запитує дозволу на переміщення файлів у смітник, якщо ви використовуєте телефон Pixel із встановленою ОС Android 11. Однак він запитує дозвіл практично на кожному іншому пристрої з Android 11, включаючи більшість пристроїв Samsung, Xiaomi, OnePlus і ASUS. Що дає?
Причина в тому, що програма системної галереї не підпадає під обмеження Scoped Storage. Це означає, що програма фондової галереї може відкривати, редагувати або видаляти зображення та відео без явного дозволу. Google Photos попередньо налаштовано як програму системної галереї на телефонах Pixel, але більшість OEM-виробників замість цього встановлюють власну програму галереї. Крім того, немає жодних налаштувань користувача для зміни програми системної галереї, навіть на екрані «програми за замовчуванням» Android. Однак там є прихований спосіб змінити програму системної галереї, але він є великий застереження: лише системну програму можна встановити як програму системної галереї. Це означає лише телефони, які Google Photos уже встановлено як системний додаток можна скористатися цією хитрістю.
Не так багато телефонів відповідають цьому критерію, але на основі нашого тестування, ми можемо це підтвердити працює на більшості телефонів OnePlus і деяких ASUS. Цей метод не спрацював на жодному з телефонів Samsung, на яких ми його тестували, і він також не спрацював на Xiaomi Mi 10 Pro. Якщо у вас є root-доступ або ви використовуєте спеціальну ПЗУ, цей метод може працювати на вашому пристрої після того, як ви систематизуєте програму Google Photos, але ми протестували цей метод лише на стандартних пристроях.
Як (можливо) зробити Google Photos програмою системної галереї
Завдячуємо Кірону Квінну (Quinny899 на форумах 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).
Що робить ця команда?
Android 10 додав a новий API під назвою «Ролі". Коли програма має певну роль, їй автоматично надається доступ до певних дозволів. Наприклад, роль SYSTEM_GALLERY автоматично надає програмі «повний доступ для читання та запису до всіх файлів зображень і відео на зовнішній пам’яті, включаючи доступ до розташування метаданих." Роль SYSTEM_GALLERY можна надати лише системним програмам, а її власник за замовчуванням визначається Android значення конфігурації "config_systemGallery." Як ми пояснювали раніше, більшість OEM-виробників попередньо встановлюють це значення для назви пакета, що відповідає їхньому власний додаток для створення галереї. Це значення не можна змінити, не змінивши фреймворк або не встановивши накладення, для обох яких потрібен доступ root.
Проте це є можна додати іншу програму як власника ролі SYSTEM_GALLERY, але тільки якщо ця програма також є системною. Це можливо на багатьох телефонах OnePlus і деяких ASUS, оскільки ці OEM-виробники, здається, попередньо встановили Google Photos на системному рівні, а не на рівні користувача. Через це програма Google Photos має право мати роль SYSTEM_GALLERY, і ми користуємося перевагою прихованого інтерфейсу оболонки RoleManager Android, щоб надати йому доступ до дозволів, які зазвичай не можуть бути надано. Якщо ви спробуєте надати роль SYSTEM_GALLERY несистемній програмі, ви побачите таку помилку в logcat:
ERoleControllerServiceImpl: Packagedoesnotqualifyfortherole, package: com.google.android.apps.photos, role: android.app.role.SYSTEM_GALLERY
На жаль, ми не знайшли способу обійти це обмеження, але якщо знайдемо, ми поділимося нашим методом із спільнотою. Звичайно, ми б віддали перевагу тому, щоб Google просто зробив роль SYSTEM_GALLERY доступною для користувача, а не обмежувався вибором OEM.