Запросить фоновое местоположение

На этой странице обсуждается следующее:

  • Как запросить доступ к фоновому местоположению.
  • Как обработать запрос в зависимости от целевой версии SDK вашего приложения.
  • Как предпочтения пользователя относительно приблизительного местоположения влияют на то, как ваше приложение получает фоновое местоположение.
Рисунок 7. Страница настроек включает опцию « Разрешить постоянно» , которая предоставляет фоновый доступ к местоположению.

Содержимое диалогового окна разрешений зависит от целевой версии SDK.

Когда функция вашего приложения запрашивает фоновое местоположение на устройстве под управлением Android 10 (уровень API 29), в диалоговом окне системных разрешений появляется параметр «Разрешить все время» . Если пользователь выберет этот вариант, функция вашего приложения получит фоновый доступ к местоположению.

Однако в Android 11 (уровень API 30) и более поздних версиях системное диалоговое окно не включает параметр «Разрешить постоянно» . Вместо этого пользователи должны включить фоновое расположение на странице настроек, как показано на рисунке 7.

Вы можете помочь пользователям перейти на эту страницу настроек, следуя рекомендациям при запросе разрешения на фоновое местоположение. Процесс предоставления разрешения зависит от целевой версии SDK вашего приложения.

Приложение предназначено для Android 11 или более поздней версии

Если вашему приложению не предоставлено разрешение ACCESS_BACKGROUND_LOCATION и shouldShowRequestPermissionRationale() возвращает true , покажите пользователям обучающий пользовательский интерфейс, который включает в себя следующее:

  • Четкое объяснение того, почему функции вашего приложения необходим доступ к фоновому местоположению.
  • Видимая пользователем метка параметра настроек, предоставляющая фоновое расположение (например, «Разрешить все время» на рис. 7). Вы можете вызвать getBackgroundPermissionOptionLabel() чтобы получить эту метку. Возвращаемое значение этого метода локализовано в соответствии с языковыми предпочтениями устройства пользователя.
  • Возможность для пользователей отклонить разрешение. Если пользователи откажутся от доступа к фоновому местоположению, они смогут продолжить использовать ваше приложение.
Пользователи могут нажать на системное уведомление, чтобы изменить местоположение.   настройки для приложения
Рисунок 8. Уведомление, напоминающее пользователю, что он предоставил приложению доступ к фоновому местоположению.

Приложение предназначено для Android 10 или более ранней версии

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

Поскольку ваше приложение уже следует рекомендациям по запросу разрешений на определение местоположения, вам не нужно вносить какие-либо изменения для поддержки такого поведения.

Пользователь может повлиять на точность определения местоположения в фоновом режиме

Если пользователь запрашивает приблизительное местоположение , выбор пользователя в диалоговом окне разрешений местоположения также применяется к фоновому местоположению. Другими словами, если пользователь предоставляет вашему приложению разрешение ACCESS_BACKGROUND_LOCATION , но предоставляет только приблизительный доступ к местоположению на переднем плане, ваше приложение также имеет только приблизительный доступ к местоположению в фоновом режиме.

Дополнительные ресурсы

Для получения дополнительной информации о разрешениях местоположения в Android просмотрите следующие материалы:

Кодлабы

Видео

Образцы

  • Пример приложения, демонстрирующий использование разрешений на определение местоположения.