从Android上的GPS提供商处获取*粗略*位置

时间:2013-01-22 14:30:30

标签: android gps location

我的应用只需要非常粗略的位置数据,因此我最初将清单权限设置为ACCESS_COARSE_LOCATION,并为NETWORK_PROVIDER设置位置监听器。这给了我所需的粗略位置估算,但只有Google位置服务开启。

我原以为如果用户只启用了GPS,我仍然可以粗略估计其位置。但似乎从GPS_PROVIDER获取任何位置信息的唯一方法是使用ACCESS_FINE_LOCATION权限。

那么,只有启用了GPS,应用无法接收位置信息,除非获得ACCESS_FINE_LOCATION权限吗?换句话说,如果应用只有GPS_PROVIDER权限,则ACCESS_COARSE_LOCATION无法发送粗略的位置估算值?

1 个答案:

答案 0 :(得分:6)

  

那么,只有启用了GPS,除非拥有ACCESS_FINE_LOCATION权限,否则应用无法接收位置信息吗?

一般来说,是的。

引用the documentation for LocationManager

  

如果您的应用程序仅具有粗略权限,则它将无法访问GPS或被动位置提供程序。其他提供商仍将返回位置结果,但更新率将受到限制,确切的位置将被混淆到一个粗略的准确度。

  

换句话说,如果应用只有ACCESS_COARSE_LOCATION权限,则GPS_PROVIDER无法发送粗略的位置估算值?

引用Android 4.2 release notes

  

与以前版本的Android相比,如果您的应用请求ACCESS_COARSE_LOCATION权限但未请求ACCESS_FINE_LOCATION权限,则用户位置结果可能不太准确。   为了在您的应用请求粗略位置(而非精确位置)的权限时满足用户的隐私期望,系统将不会提供比城市街区更准确的用户位置估算。

但是,我假设这并不取代LocationManager的“无法访问GPS”声明。我认为这意味着NETWORK_PROVIDER数据可能被禁止,如果它被认为太准确了。