Android Q中引入的ACCESS_BACKGROUND_LOCATION如何影响Geofence API?

问题描述 投票:1回答:2

为了使用Geofence API,用户has to give应用程序ACCESS_FINE_LOCATION。该地点被认为是危险的,可以随时撤销;撤消此权限后,该应用无法请求地理围栏更新。

ACCESS_BACKGROUND_LOCATION如何适应这张照片?我们肯定知道这个许可也是dangerouscan be revoked at any time。这是否意味着如果我们想要在每次地理围栏更改发生时注册一些IntentService,我们还必须确保用户提供了ACCESS_BACKGROUND_LOCATION权限?或者,只有当我们尝试在我们自己的后台Service / BroadcastReceiver中获取当前位置时,我们才需要使用此权限吗?

我问这个问题的原因是文档在这一点上似乎有点模糊:描述Q Developer Preview的文档提到地理围栏是背景位置检索的用例之一,而Geofencing API page没有提到ACCESS_BACKGROUND_LOCATION它的要求。

android android-location android-geofence androidq
2个回答
1
投票

我的猜测部分是“Re-register geofences only when required”:

注册的地理围栏保存在com.google.process.location包装所拥有的com.google.android.gms工艺中。

因为com.google.process.location应该是获取位置数据的人(因此需要请求ACCESS_BACKGROUND_LOCATION权限的人),因此它并不是真正需要的。

话虽这么说,遵循这个逻辑ACCESS_FINE_LOCATION许可既不需要。它需要的事实可能是由于两个原因(我不知道真正的原因):

  • 注册地理围栏或接收通知位置时,
  • 或者,Google Play服务会检查此权限,禁止应用程序通过将Play服务用作获取信息的代理进程来规避缺少位置权限。

对我来说,第二个假设更有意义,这意味着即使在应用程序不需要技术的情况下(获取位置的过程是Play Service),出于隐私/安全原因也需要它。

遵循这一逻辑,谷歌应该(将?)也强制执行ACCESS_BACKGROUND_LOCATION,以确保用户的隐私/安全并减少电池消耗。


0
投票

在测试版4上,即使应用程序完全位于前台,在未授予ACCESS_BACKGROUND_LOCATION时添加地理围栏也会失败,状态码为13(“错误”)。

© www.soinside.com 2019 - 2024. All rights reserved.