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

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

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

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

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

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

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

Приложение предназначено для Android 11 или выше.

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

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

Приложение предназначено для Android 10 или ниже.

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

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

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

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

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

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

Кодовые лаборатории

Видео

Образцы

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