Благодаря Scoped Storage в Android 11 на некоторых устройствах удаление изображений в Google Фото становится немного неудобным, но это можно исправить.
У нас нет возможности узнать, сколько устройств на рынке работают под управлением Android 11 со времен Google. больше не публикует статистику распространения, но сейчас, вероятно, десятки миллионов таких компаний, как Xiaomi и Samsung, успели выпустить обновление много их моделей. Если ваше устройство работает под управлением Android 11 и вы используете Google Фото, есть вероятность, что вы столкнулись с довольно неприятным изменением в том, как приложение обрабатывает удаление и восстановление изображений. Вместо того, чтобы просто выбирать изображения и видео, которые вы хотите удалить, нажмите значок корзины, а затем нажмите кнопку «Переместить». в корзину», теперь вам придется нажать на дополнительную подсказку, чтобы дать Google Фото разрешение на удаление или восстановление вашего файлы.
Тех из вас, кто снимает много фотографий и видео, может раздражать необходимость предоставлять Google Фото разрешение на удаление или восстановление файла. И как указывает
AndroidПолиция, нажатие дополнительной кнопки — не единственная проблема, с которой вам, возможно, придется столкнуться. Если вы используете Google Фото на другом устройстве и хотите отредактировать или удалить файл, загруженный со своего телефона под управлением Android 11, приложение может попросить вас просмотреть «несинхронизированные изменения». Это может быстро надоесть, если Google Фото будет продолжать просить вас просмотреть изменения, которые вы только что внесли на другой платформе.Дополнительный шаг для удаления или восстановления файла не требовался в Android 10, но теперь требуется в Android 11 из-за применения ограниченного хранилища. До появления Scoped Storage доступ ко всему каталогу внешнего хранилища управлялся одним разрешения, что затрудняет ограничение того, какие приложения могут получить доступ к вашим личным документам, изображениям или видео. Благодаря использованию Scoped Storage Android ограничивает доступ приложения к конфиденциальным файлам без явного согласия пользователя. Более подробную информацию о хранилище с ограниченной областью действия можно найти. в этой статье или посмотрите на рисунок Google ниже, чтобы увидеть сводку изменений.
Пока они были заняты ограничением доступа к хранилищу в Android 11, Google также улучшал существующие API, чтобы улучшить взаимодействие с пользователем. Например, приложения, ориентированные на Android 11, могут использовать API MediaStore для удалить файл, а не удалять его. Однако, чтобы переместить файл в корзину, приложению необходимо предложить пользователю предоставить ему доступ на запись. Поскольку большинство изображений и видео, которые вы добавляете в Google Фото со своего телефона, были получены из другого приложения — например стандартное приложение камеры. «Фото» должно запрашивать разрешение, прежде чем оно сможет переместить файл в или из него. мусор. Однако Google Фото не запрашивает разрешение на удаление файлов, если вы используете телефон Pixel с установленным Android 11. Однако он запрашивает разрешение практически на каждом другом устройстве под управлением Android 11, включая большинство устройств Samsung, Xiaomi, OnePlus и ASUS. Что дает?
Причина в том, что на приложение системной галереи не распространяются ограничения на ограниченное хранилище. Это означает, что приложение стандартной галереи может открывать, редактировать или удалять изображения и видео без явного разрешения. Google Photos предустановлен в качестве системного приложения галереи на телефонах Pixel, но большинство OEM-производителей вместо этого устанавливают собственное приложение галереи. Кроме того, нет никаких настроек для пользователя, позволяющих изменить приложение системной галереи, даже на экране Android «приложения по умолчанию». Однако там является скрытый способ изменить приложение системной галереи, но он есть большой Предостережение: только системное приложение можно установить в качестве приложения системной галереи. Это означает, что только те телефоны, которые Google Фото уже предустановлено в качестве системного приложения. можно воспользоваться этим трюком.
Не многие телефоны соответствуют этому критерию, но на основе нашего тестирования, мы можем это подтвердить работает на большинстве телефонов OnePlus и некоторых телефонах ASUS. Этот метод не работал ни на одном из телефонов Samsung, на которых мы его тестировали, а также на Xiaomi Mi 10 Pro. Если у вас есть root-доступ или вы используете собственное ПЗУ, этот метод может работать на вашем устройстве после систематизации приложения 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 Фото).
Что делает эта команда?
В Android 10 добавлено новый API под названием «Роли". Когда приложение имеет определенную роль, ему автоматически предоставляется доступ к определенным разрешениям. Например, Роль SYSTEM_GALLERY автоматически предоставляет приложению «полный доступ на чтение и запись ко всем файлам изображений и видео на внешнем хранилище, включая доступ к местоположению». метаданные." Роль SYSTEM_GALLERY может быть предоставлена только системным приложениям, а ее владелец по умолчанию определяется Android значение конфигурации «config_systemGallery». Как мы объясняли ранее, большинство OEM-производителей устанавливают это значение для имени пакета, соответствующего их собственное приложение-галерея. Это значение нельзя изменить без изменения платформы или установки оверлея, поскольку оба этих процесса требуют root-доступа.
Однако это является можно добавить другое приложение в качестве обладателя роли SYSTEM_GALLERY, но только если это приложение также является системным приложением. Это возможно на многих телефонах OnePlus и некоторых ASUS, поскольку эти OEM-производители, по-видимому, предварительно установили Google Photos на уровне системы, а не на уровне пользователя. По этой причине приложение Google Фото имеет право на роль 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.