为了使用Geofence API,用户has to give应用程序ACCESS_FINE_LOCATION
。该地点被认为是危险的,可以随时撤销;撤消此权限后,该应用无法请求地理围栏更新。
ACCESS_BACKGROUND_LOCATION
如何适应这张照片?我们肯定知道这个许可也是dangerous和can be revoked at any time。这是否意味着如果我们想要在每次地理围栏更改发生时注册一些IntentService
,我们还必须确保用户提供了ACCESS_BACKGROUND_LOCATION
权限?或者,只有当我们尝试在我们自己的后台Service / BroadcastReceiver中获取当前位置时,我们才需要使用此权限吗?
我问这个问题的原因是文档在这一点上似乎有点模糊:描述Q Developer Preview的文档提到地理围栏是背景位置检索的用例之一,而Geofencing API page没有提到ACCESS_BACKGROUND_LOCATION
它的要求。
我的猜测部分是“Re-register geofences only when required”:
注册的地理围栏保存在
com.google.process.location
包装所拥有的com.google.android.gms
工艺中。
因为com.google.process.location
应该是获取位置数据的人(因此需要请求ACCESS_BACKGROUND_LOCATION
权限的人),因此它并不是真正需要的。
话虽这么说,遵循这个逻辑ACCESS_FINE_LOCATION
许可既不需要。它需要的事实可能是由于两个原因(我不知道真正的原因):
对我来说,第二个假设更有意义,这意味着即使在应用程序不需要技术的情况下(获取位置的过程是Play Service),出于隐私/安全原因也需要它。
遵循这一逻辑,谷歌应该(将?)也强制执行ACCESS_BACKGROUND_LOCATION
,以确保用户的隐私/安全并减少电池消耗。
在测试版4上,即使应用程序完全位于前台,在未授予ACCESS_BACKGROUND_LOCATION
时添加地理围栏也会失败,状态码为13(“错误”)。