[Обновление: подробнее] Android 11 блокирует появление сторонних приложений камеры при выборе изображений/видео

В Android 11 реализовано изменение, которое предотвратит появление сторонних приложений камеры в действиях по выбору изображения/видео.

Обновление 1 (20.08.2020, 18:15 по восточному времени): Google обновил документацию для разработчиков, чтобы объяснить, почему сторонние приложения камеры на Android 11 не могут реагировать на неявные действия по изображению/видео. Прокрутите вниз для получения дополнительной информации. Статья, опубликованная 19 августа 2020 г., сохранена ниже.

Android 11 меняет способ взаимодействия приложений с сторонние приложения для камеры на вашем устройстве, что предотвратит их появление при выборе изображений/видео. В старых версиях Android, если приложение хочет, чтобы пользователи могли делать снимки, оно может либо реализовать съемку внутри приложения. (с использованием различных API-интерфейсов камеры Android) или он может отправить намерение, которое может быть обработано специальным приложением камеры для захвата изображения. вместо. Если приложение решит использовать последний вариант, пользователям более старых версий Android будет предложено диалоговое окно устранения неоднозначности, в котором они смогут выбрать приложение камеры для захвата изображения. В диалоговом окне обычно отображаются все приложения камеры, установленные на устройстве пользователя, включая сторонние приложения камеры, если они написаны с учетом определенных намерений. Однако в Android 11 диалоговое окно будет включать только предустановленные стандартные приложения для камеры, если только разработчики специально не нацеливают определенные сторонние приложения для камеры.

Это изменение фактически означает, что в большинстве случаев пользователям придется вручную запускать сторонние приложения камеры, когда они хотят сделать снимок, что делает использование сторонних приложений камеры менее удобным. Это также заставит пользователей обвинять разработчиков сторонних приложений для камеры, когда пользователь узнает, что его любимое приложение для камеры больше не может быть запущено из других приложений. Google реализует это изменение в Android 11, запрещая сторонним приложениям камеры реагировать на следующие намеренные действия:

  • android.media.action.VIDEO_CAPTURE
  • android.media.action.IMAGE_CAPTURE
  • android.media.action.IMAGE_CAPTURE_SECURE

Google говорит что это изменение было введено в Android 11 для защиты конфиденциальности и безопасности пользователей. Компания не уточняет, каким образом, но вполне вероятно, что некоторые вредоносные приложения замаскировались под приложения камеры, чтобы получить доступ к фотографиям пользователя. Тем не менее, компания упоминает обходной путь для разработчиков, который позволит приложениям по-прежнему запускать сторонние приложения для камеры. Обходной путь, по сути, требует, чтобы разработчики при отправке намерения ориентировались на конкретное стороннее приложение по своему выбору. Например, разработчик приложения для сканирования документов может отправить явное намерение запустить Камера Adobe Photoshop вместо того, чтобы отправлять неявное намерение открыть средство выбора камеры. В Android 11 разработчики даже не могут запросить список приложений, которые могут ответить на три вышеупомянутых запроса. намеренные действия, а это означает, что разработчику придется заранее знать, какие сторонние приложения для камеры он хочет использовать. поддерживать.

Источник: CommonsWare, Android-разработчики

С помощью: Реддит

Спасибо старшему члену XDA AndroidРазработчикLB за подсказку!

Обновление 1: Google заявляет, что это изменение сделано для обеспечения конфиденциальности.

Google обновил страницу изменений поведения Android 11, добавив новую информацию о «Для действий с мультимедийными намерениями требуется системная камера по умолчанию"раздел (через Грань). Это изменение, как поясняет Google, «призвано обеспечить правильную обработку метаданных местоположения EXIF ​​на основе разрешений на местоположение, определенных в Приложение отправляет намерение». По сути, Google обеспокоен тем, что приложения, которым еще не предоставлен явный доступ к местоположению, заставляют пользователей открывать приложения камеры, которые иметь был предоставлен доступ к местоположению, и поскольку полученная фотография, передаваемая в приложение, может содержать местоположение EXIF метаданные, то вызывающее приложение может обойти запрос на доступ к местоположению, прочитав данные о местоположении из Фото. Если приложение попытается сделать это в Android 11, ему необходимо будет объявить ACCESS_MEDIA_LOCATION а также ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION разрешения для чтения метаданных местоположения EXIF. (Отметить, Google закрыл еще одну лазейку для доступа к местоположению в Android 10, требуя, чтобы приложения запрашивали ACCESS_MEDIA_LOCATION разрешение, если приложение пытается получить неотредактированные метаданные EXIF ​​из фотографий.)

Хотя это изменение поведения повлияет на возможность приложений запускать определяемое пользователем приложение камеры по умолчанию из-за того, насколько старо и часто используется приложение 3. вышеупомянутые действия по намерению, Google отмечает, что изменение не влияет на все действия по намерению, которые могут запускать определяемое пользователем приложение камеры по умолчанию, например как: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE, или android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA. Однако эти намерения не служат той же цели, поскольку они только запускают приложение камеры по умолчанию, а не позволяют отправить изображение обратно в вызывающее приложение.