为了使用地理围栏 API,用户 has to give 应用程序 ACCESS_FINE_LOCATION 。这个位置被认为是危险的,可以随时撤销;一旦此权限被撤销,应用程序将无法请求地理围栏更新。
ACCESS_BACKGROUND_LOCATION 权限在这张图片中的表现如何?我们确信这个权限也是 dangerouscan be revoked at any time 。是不是说如果我们要注册一些IntentService在每次geofence变化发生时调用,还要确保用户提供了ACCESS_BACKGROUND_LOCATION权限?或者,如果我们尝试在我们自己的后台 Service/BroadcastReceiver 中获取当前位置,我们是否需要仅使用 权限?

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

最佳答案

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



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

话虽如此,遵循这个逻辑 ACCESS_FINE_LOCATION 权限应该是不需要的。需要它的事实可能是由于两个原因(我不知道真正的原因):

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

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

    按照这种逻辑,Google还应该(将要)强制执行ACCESS_BACKGROUND_LOCATION,以确保用户的隐私/安全并减少电池消耗。

    关于android - Android Q 中引入的 ACCESS_BACKGROUND_LOCATION 对地理围栏 API 有何影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55705238/

    10-11 22:25