我正在构建一个 Android 应用程序,它将跟踪用户的地理位置并在地图上绘制他们的路线。
我正在使用 Google Play Services location API,如此 处 所述。
很明显,我的应用程序需要 ACCESS_FINE_LOCATION
权限,我将其放在清单中:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
我还需要 ACCESS_COARSE_LOCATION
许可吗?我需要粗略位置的用例是什么?
原文由 Terry 发布,翻译遵循 CC BY-SA 4.0 许可协议
不。
如果您不要求
ACCESS_FINE_LOCATION
,但您需要位置数据,并且您愿意让该数据模糊(例如,距离用户位置大约一个城市街区)。在LocationManager
的情况下,您只能使用NETWORK_PROVIDER
;对于 Play Services 融合位置提供者,他们应该在内部处理这个问题。曾几何时,很久很久以前,用户在安装时会被告知该应用程序需要粗略还是精细的位置访问权限。用户可能会接受需要粗略访问权限的应用程序,但会拒绝需要精细访问权限的应用程序。
由于此 UI 已更改,并且用户很难确定应用程序需要粗略位置权限还是精细位置权限,我怀疑大多数开发人员只要求精细位置权限。话虽这么说,如果您知道您的应用程序不需要那种级别的准确性(例如,您需要天气预报的位置),请求粗略的位置许可是隐私方向的一个很好的“提示”,并且将来可能会再次证明是有益的。
更新 2021-11-16 :如果您要求
ACCESS_FINE_LOCATION
,Android 12 会更改 UI。 用户现在可以选择将您降级为仅获得ACCESS_COARSE_LOCATION
access ,方法是选择“近似”而不是“精确”。