我什么时候应该使用ACCESS_COARSE_LOCATION权限?

时间:2016-03-08 14:09:22

标签: android google-play-services android-permissions android-location google-geolocation

我正在构建一个Android应用,它将跟踪用户的地理位置并在地图上绘制路线。

我正在使用Google Play服务位置API,如here所述。

直觉我的应用程序需要ACCESS_FINE_LOCATION权限,我将其放入清单中:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

我是否还需要ACCESS_COARSE_LOCATION权限? 我需要粗略位置的用例是什么?

5 个答案:

答案 0 :(得分:60)

  

我是否还需要ACCESS_COARSE_LOCATION权限?

没有

  

我需要粗略位置的用例是什么?

如果您没有要求ACCESS_FINE_LOCATION,但您需要位置数据,并且您愿意将该数据模糊(例如,从用户的位置到城市街区附近)。对于LocationManager,您只能使用NETWORK_PROVIDER;对于Play服务融合位置提供商,他们应该在内部处理这个问题。

很久很久以前,用户在安装时被告知该应用是否需要粗略或精细的位置访问。用户可能会接受需要粗略访问但拒绝需要精确访问的应用的应用。

由于用户界面已经发生变化,用户在确定应用是否需要粗略或精细的位置许可方面会遇到一些困难,我怀疑大多数开发人员只是要求获得良好的位置许可。话虽这么说,如果你知道你的应用程序不需要那么高的准确度(例如,你想要天气预报的位置),要求粗略的位置许可是隐私方面的一个很好的“小费”可能在将来再次证明是有益的。

答案 1 :(得分:14)

不,你不需要使用粗略的位置。

粗略位置适用于网络提供商的位置,精确位置适用于GPS提供商和网络位置提供商。如此优越的地理位置涵盖了两者,您不需要使用另一个。

  

要从NETWORK_PROVIDER或接收位置更新   GPS_PROVIDER,您必须通过声明请求用户的许可   ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限,   分别在你的Android清单文件中。没有这些   权限,您的应用程序将在请求时在运行时失败   位置更新。

     

如果您同时使用NETWORK_PROVIDER和GPS_PROVIDER,那么您需要   仅请求ACCESS_FINE_LOCATION权限,因为它   包括两个提供商的许可。许可   ACCESS_COARSE_LOCATION仅允许访问NETWORK_PROVIDER。

This是供您参考的链接。

答案 2 :(得分:8)

位置可以通过两种方式确定:

Using NETWORK_PROVIDER
Using GPS_PROVIDER
  1. 使用 NETWORK_PROVIDER

    使用此提供程序所需的Android权限也是 ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION

  2. 使用 GPS_PROVIDER

    仅使用此提供程序所需的Android权限 ACCESS_FINE_LOCATION

答案 3 :(得分:2)

ACCESS_FINE_LOCATION包括ACCESS_COARSE_LOCATION。但是,有一个陷阱:

ACCESS_COARSE_LOCATION为您提供了最近知道的位置,该位置对电池友好https://developer.android.com/training/location/retrieve-current.html#setup 这取决于Google Play服务

但是,如果您需要实时/实时位置信息,请使用ACCESS_FINE_LOCATION 它为您提供实时/实时位置。不过,您需要使用LocationListener。

答案 4 :(得分:0)

简单地说,ACCESS_FINE_LOCATION为您提供了更好且准确的位置,而ACCESS_COARSE_LOCATION为您提供了不太准确的位置。