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

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

  • Как запросить фоновый доступ к местоположению.
  • Как обработать запрос в зависимости от целевой версии 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 можно найти в следующих материалах:

Codelabs

Видео

Образцы

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