Трехпозиционные разрешения на доступ к местоположению

Трехпозиционные разрешения на доступ к данным о местоположении в Android 10 дают пользователям больше возможностей управлять доступом приложений к данным о местоположении их устройств.

В Android 9 и более ранних версиях пользователи могли предоставлять приложениям постоянный доступ к данным о местоположении. Пользователь мог запретить или разрешить доступ. В последнем случае приложения получали доступ к данным о местоположении в любое время (в активном и фоновом режиме). В Android 10 пользователям доступны три варианта предоставления приложению доступа к данным о местоположении устройства. Когда приложение запрашивает уровень доступа, пользователю предлагается предоставить или отклонить его.

Обычно пользователь видит три варианта, как показано на рисунке 1. Однако в некоторых случаях достаточно двух вариантов, и тогда показываются только они.

Экран с тремя вариантами доступа к данным о местоположении

Рисунок 1. Экран уведомлений с тремя состояниями.

Доступны три варианта:

  • Разрешить в любом режиме. Приложению доступны данные о местоположении, даже когда оно не используется (работает в фоновом режиме). Это эквивалентно предоставлению разрешения в Android 9 и более ранних версиях.
  • Разрешить только во время использования приложения (только активный режим). Приложение может видеть местоположение устройства, только когда оно активно.
  • Запретить. Приложение никогда не сможет получить доступ к данным о местоположении устройства. Это аналогично запрету доступа в Android 9 и более ранних версиях.

Когда приложения запрашивают разрешение на доступ к местоположению, пользователям предлагается его предоставить.

Если пользователь предоставил приложению разрешение Разрешить только во время использования приложения, оно может запросить дополнительное разрешение Разрешить в любом режиме. Пользователь увидит диалоговое окно с запросом (рис. 2). Если пользователь выберет Сохранить доступ при использовании, то при следующем обращении приложения к местоположению устройства в диалоговом окне появится вариант Сохранить и больше не спрашивать.

Для приложений, предназначенных для Android 10, диалоговое окно появляется в следующих случаях:

  • Подождите не менее 24 часов после предоставления разрешения.
  • Только если приложение получает данные о местоположении в фоновом режиме.
  • Когда экран включен и пользователь не работает с другим приложением.
Инкрементные разрешения

Рисунок 2. Дополнительные разрешения.

Подробнее о том, как приложения получают доступ к местоположению устройства… Если ваше приложение предназначено для Android 9 и более ранних версий, ознакомьтесь с разделом Продолжение действий, инициированных пользователем.

Влияние

Трехуровневые разрешения на доступ к данным о местоположении влияют на все приложения, которым требуется доступ к данным о местоположении устройства при работе в фоновом режиме. В Android 10 такие разрешения обязательны.

Вы можете изменить свой код, но не можете изменить или настроить поведение фреймворка, связанное с разрешениями.

Реализация

В Android 10 разрешения на доступ к данным о местоположении с тремя состояниями применяются к приложениям независимо от целевого SDK.

Информацию о том, как реализовать примеры использования приложения при обновлении устройства, можно найти в разделе Сценарии обновления устройства документации для разработчиков.

Чтобы узнать, как включить доступ для разных вариантов использования (например, для приложений, которым требуется доступ к данным о местоположении в фоновом режиме, таких как Google Карты или сервисы Google Play), ознакомьтесь со следующими разделами на странице Доступ приложений к данным о местоположении устройства:

Доступ к местоположению в приложении

Пользователи могут изменить разрешения на доступ для вашего приложения на Запретить или Разрешить только во время использования приложения. Для разрешения на доступ к местоположению в приложении, а также для всех собственных и сторонних приложений укажите уровни контроля, которые пользователь может осуществлять, согласно таблице ниже.

Тип разрешения, которое должно запрашивать приложение Варианты предоставления доступа пользователям
Приложение запрашивает только разрешения на использование активных служб Разрешить только во время использования приложения
Запретить
Приложение всегда запрашивает разрешение (в активном и фоновом режиме) Разрешить в любом режиме
Разрешить только во время использования приложения
Запретить
Все приложения, запрашивающие доступ к геоданным Разрешить только во время использования приложения

Эти разрешения применяются ко всем запросам на доступ к местоположению. Приложения с разрешениями Разрешить только во время использования приложения не могут сканировать Wi-Fi или сотовую сеть в фоновом режиме.

На устройствах с Android 11 или более ранней версией ОС приложения, для которых выбрано разрешение Разрешить только во время использования приложения, не могут выполнять поиск Bluetooth-устройств в фоновом режиме. Начиная с Android 12 приложения с разрешением Разрешить только во время использования приложения могут получать результаты поиска Bluetooth-устройств, если атрибуту android:usesPermissionFlags присвоено значение neverForLocation. Подробнее о том, почему приложение не определяет физическое местоположение…

Обновления ОС

При обновлении ОС до Android 10 разрешения на доступ к данным о местоположении в приложениях преобразуются следующим образом:

  • Включено станет Разрешить только во время использования.
  • Отключено остается отключенным (Отклонить).
  • Предварительно предоставленный доступ к местоположению становится предварительно предоставленным доступом только во время использования.