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

问题描述 投票:44回答:3

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

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

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

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

我还需要ACCESS_COARSE_LOCATION许可吗?我需要粗略位置的用例是什么?

android google-play-services android-permissions android-location google-geolocation
3个回答
62
投票

我还需要ACCESS_COARSE_LOCATION权限吗?

没有。

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

如果你不要求ACCESS_FINE_LOCATION,但是你需要位置数据,并且你愿意让这些数据模糊(比如,从用户的位置到城市街区附近)。在LocationManager的情况下,你只能使用NETWORK_PROVIDER;在Play服务融合位置提供商的情况下,他们应该在内部处理这个问题。

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

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


15
投票

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

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

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

如果您同时使用NETWORK_PROVIDER和GPS_PROVIDER,则只需要请求ACCESS_FINE_LOCATION权限,因为它包含两个提供程序的权限。 ACCESS_COARSE_LOCATION的权限仅允许访问NETWORK_PROVIDER。

This是供您参考的链接。


9
投票

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

Using NETWORK_PROVIDER
Using GPS_PROVIDER
  1. 使用NETWORK_PROVIDER 使用此提供程序所需的Android权限是ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION。
  2. 使用GPS_PROVIDER 使用此提供程序所需的Android权限仅为ACCESS_FINE_LOCATION
© www.soinside.com 2019 - 2024. All rights reserved.