为了使用地理围栏 API,用户 has to give 应用程序 ACCESS_FINE_LOCATION
。这个位置被认为是危险的,可以随时撤销;一旦此权限被撤销,应用程序将无法请求地理围栏更新。ACCESS_BACKGROUND_LOCATION
权限在这张图片中的表现如何?我们确信这个权限也是 dangerous 和 can 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还应该(将要)强制执行
ACCESS_BACKGROUND_LOCATION
,以确保用户的隐私/安全并减少电池消耗。关于android - Android Q 中引入的 ACCESS_BACKGROUND_LOCATION 对地理围栏 API 有何影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55705238/