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

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

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

Кодлабс

Видео

Образцы

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