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

新手上路,请多包涵

我正在构建一个 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 许可协议

阅读 1.1k
2 个回答

我还需要 ACCESS_COARSE_LOCATION 权限吗?

不。

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

如果您不要求 ACCESS_FINE_LOCATION ,但您需要位置数据,并且您愿意让该数据模糊(例如,距离用户位置大约一个城市街区)。在 LocationManager 的情况下,您只能使用 NETWORK_PROVIDER ;对于 Play Services 融合位置提供者,他们应该在内部处理这个问题。

曾几何时,很久很久以前,用户在安装时会被告知该应用程序需要粗略还是精细的位置访问权限。用户可能会接受需要粗略访问权限的应用程序,但会拒绝需要精细访问权限的应用程序。

由于此 UI 已更改,并且用户很难确定应用程序需要粗略位置权限还是精细位置权限,我怀疑大多数开发人员只要求精细位置权限。话虽这么说,如果您知道您的应用程序不需要那种级别的准确性(例如,您需要天气预报的位置),请求粗略的位置许可是隐私方向的一个很好的“提示”,并且将来可能会再次证明是有益的。

更新 2021-11-16 :如果您要求 ACCESS_FINE_LOCATION ,Android 12 会更改 UI。 用户现在可以选择将您降级为仅获得 ACCESS_COARSE_LOCATION access ,方法是选择“近似”而不是“精确”。

原文由 CommonsWare 发布,翻译遵循 CC BY-SA 4.0 许可协议

不,您不需要使用粗略位置。

粗略定位是针对网络提供商的位置,精细定位是针对 GPS 提供商和网络定位提供商。如此好的位置涵盖了两者,您不需要使用另一个。

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

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

是供您参考的链接。

原文由 Sagar Nayak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题