我的应用只需要非常粗略的位置数据,因此我最初将清单权限设置为ACCESS_COARSE_LOCATION
,并为NETWORK_PROVIDER
设置位置监听器。这给了我所需的粗略位置估算,但只有Google位置服务开启。
我原以为如果用户只启用了GPS,我仍然可以粗略估计其位置。但似乎从GPS_PROVIDER
获取任何位置信息的唯一方法是使用ACCESS_FINE_LOCATION
权限。
那么,只有启用了GPS,应用无法接收位置信息,除非获得ACCESS_FINE_LOCATION
权限吗?换句话说,如果应用只有GPS_PROVIDER
权限,则ACCESS_COARSE_LOCATION
无法发送粗略的位置估算值?
答案 0 :(得分:6)
那么,只有启用了GPS,除非拥有ACCESS_FINE_LOCATION权限,否则应用无法接收位置信息吗?
一般来说,是的。
引用the documentation for LocationManager
:
如果您的应用程序仅具有粗略权限,则它将无法访问GPS或被动位置提供程序。其他提供商仍将返回位置结果,但更新率将受到限制,确切的位置将被混淆到一个粗略的准确度。
换句话说,如果应用只有ACCESS_COARSE_LOCATION权限,则GPS_PROVIDER无法发送粗略的位置估算值?
与以前版本的Android相比,如果您的应用请求ACCESS_COARSE_LOCATION权限但未请求ACCESS_FINE_LOCATION权限,则用户位置结果可能不太准确。 为了在您的应用请求粗略位置(而非精确位置)的权限时满足用户的隐私期望,系统将不会提供比城市街区更准确的用户位置估算。
但是,我假设这并不取代LocationManager
的“无法访问GPS”声明。我认为这意味着NETWORK_PROVIDER
数据可能被禁止,如果它被认为太准确了。