Трехпозиционные разрешения на доступ к данным о местоположении в 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 разрешения на доступ к данным о местоположении в приложениях преобразуются следующим образом:
- Включено станет Разрешить только во время использования.
- Отключено остается отключенным (Отклонить).
- Предварительно предоставленный доступ к местоположению становится предварительно предоставленным доступом только во время использования.