Как ACCESS_BACKGROUND_LOCATION, представленный в Android Q, влияет на API Geofence?

1

Чтобы использовать Geofence API, пользователь должен предоставить приложение ACCESS_FINE_LOCATION. Это место считается опасным и может быть отменено в любое время; После отмены этого разрешения приложение не может запрашивать обновления геозон.

Как разрешение ACCESS_BACKGROUND_LOCATION вписывается в эту картинку? Мы точно знаем, что это разрешение также опасно и может быть отозвано в любое время. Означает ли это, что если мы хотим зарегистрировать какой-либо IntentService который будет вызываться каждый раз, когда происходит изменение IntentService, мы также должны убедиться, что пользователь предоставил разрешение ACCESS_BACKGROUND_LOCATION? Или нам нужно использовать это разрешение, только если мы пытаемся получить текущее местоположение в нашей собственной фоновой службе /BroadcastReceiver?

Причина, по которой я задаю этот вопрос, заключается в том, что на данный момент документация выглядит немного расплывчатой: в документации, описывающей Q Developer Preview, упоминается, что геозонирование является одним из вариантов использования для фонового поиска местоположения, в то время как страница API геозонирования делает не упоминать ACCESS_BACKGROUND_LOCATION среди своих требований.

Теги:
android-geofence
android-location
androidq

2 ответа

1

Я думаю, что раздел " Перерегистрация геозон только тогда, когда это необходимо ":

Зарегистрированные геозоны хранятся в процессе com.google.process.location который принадлежит пакету com.google.android.gms.

будет то, что это на самом деле не нужно, так как com.google.process.location должен быть тем, кто получает данные о местоположении (поэтому тот, который должен запросить разрешение ACCESS_BACKGROUND_LOCATION).

При этом, следуя этой логике, разрешение ACCESS_FINE_LOCATION должно быть необходимым. Факт, что это необходимо, может быть из-за двух причин (я не знаю реальную причину):

  • что при регистрации геозоны или при получении уведомления проверяется местоположение,
  • или что это разрешение проверено Сервисами Google Play, чтобы запретить приложению обходить отсутствие разрешения на местоположение, используя Сервисы Play в качестве прокси-сервера для получения информации.

Для меня второе предположение имеет больше смысла, а это означает, что даже если приложение технически не понадобится (процесс получения местоположения называется Play Service), оно требуется по соображениям конфиденциальности/безопасности.

Следуя этой логике, Google должен (будет?) Также применять ACCESS_BACKGROUND_LOCATION как для обеспечения конфиденциальности/безопасности пользователя, так и для снижения потребления батареи.

  • 1
    Да, мое мышление было точно таким же: с одной стороны, работа, связанная с геозонами (которая потребовала бы разрешения), происходит в отдельном процессе, следовательно, разрешение на фоновое местоположение не потребуется; с другой стороны, разрешение ACCESS_FINE_LOCATION все же требуется.
0

В бета-версии 4 добавление ACCESS_BACKGROUND_LOCATION когда ACCESS_BACKGROUND_LOCATION не предоставляется, даже когда приложение полностью находится на переднем плане, завершается неудачно с кодом состояния 13 ("ошибка").

Ещё вопросы

Сообщество Overcoder
Наверх
Меню