我有一个 GPS 应用程序已在清单中请求
ACCESS_FINE_LOCATION
权限,现在我想添加一个需要 ACCESS_COARSE_LOCATION
的库 (MoPub)。
我是否正确地假设
ACCESS_FINE_LOCATION
就足够了,并且我可以从我的清单中省略 ACCESS_COARSE_LOCATION
?
https://developer.android.com/develop/sensors-and-location/location/permissions#approximate-request
在 Android 12(API 级别 31)或更高版本上,用户可以请求您的应用仅检索大致位置信息,即使您的应用请求 ACCESS_FINE_LOCATION 运行时权限也是如此。
要处理这种潜在的用户行为,请勿单独请求 ACCESS_FINE_LOCATION 权限。相反,请在单个运行时请求中同时请求 ACCESS_FINE_LOCATION 权限和 ACCESS_COARSE_LOCATION 权限。如果您尝试仅请求 ACCESS_FINE_LOCATION,系统会在 Android 12 的某些版本上忽略该请求。
两者都需要。作为最终用户只能授予近似访问权限。因此,如果您只有
ACCESS_FINE_LOCATION
- 您将不会获得任何权限批准。所以现在需要 ACCESS_COARSE_LOCATION
和 ACCESS_FINE_LOCATION
。
https://developer.android.com/guide/topics/location/strategies.html#Permission
注意:如果您同时使用 NETWORK_PROVIDER 和 GPS_PROVIDER,则只需请求 ACCESS_FINE_LOCATION 权限,因为它包含两个提供商的权限。 (ACCESS_COARSE_LOCATION 的权限仅包括 NETWORK_PROVIDER 的权限。)
简而言之:是的,如果您已经定义了
ACCESS_COARSE_LOCATION
,则不需要 ACCESS_FINE_LOCATION
。
取决于您的需求。
许可方面,
ACCESS_FINE_LOCATION
包括ACCESS_COARSE_LOCATION
。然而,有一个问题:
ACCESS_COARSE_LOCATION
为您提供最后已知位置,省电
https://developer.android.com/training/location/retrieve-current.html#setup但是,如果您需要像 Pokemon Go 这样的实时/实时位置,请使用
ACCESS_FINE_LOCATION
LocationListener
更新
在 Android 12(API 级别 31)或更高版本上,用户可以请求您的应用仅检索大致位置信息,即使您的应用请求 ACCESS_FINE_LOCATION 运行时权限也是如此。
要处理这种潜在的用户行为,请勿单独请求 ACCESS_FINE_LOCATION 权限。相反,请在单个运行时请求中同时请求 ACCESS_FINE_LOCATION 权限和 ACCESS_COARSE_LOCATION 权限。 如果您尝试仅请求 ACCESS_FINE_LOCATION,系统会在 Android 12 的某些版本上忽略该请求。
检查此网址:https://developer.android.com/training/location/permissions#approximate-request
差异:
https://developer.android.com/training/location/permissions#accuracy https://developer.android.com/training/location/permissions#approximate-request
您需要请求这两个权限。
大约 提供设备位置的估计,精确到大约 1 英里(1.6 公里)以内。当您 声明 ACCESS_COARSE_LOCATION 权限,但不声明 ACCESS_FINE_LOCATION 权限。精确的 提供尽可能准确的设备位置估计,通常在约 160 英尺(50 米)内,有时在 精确度可达 10 英尺(几米)或更精确。您的应用程序使用 当您声明时,此级别的位置精度 ACCESS_FINE_LOCATION 权限。
如果用户授予大致位置权限,您的应用仅 可以访问大概位置,无论在哪个位置 您的应用程序声明的权限。
当用户仅授予近似值时,您的应用程序应该仍然可以工作 位置访问。如果您的应用程序中的某个功能绝对需要访问权限 使用 ACCESS_FINE_LOCATION 权限来精确定位,您可以 要求用户允许您的应用访问精确位置。 ``
然后在Android 12中权限更改
在 Android 12(API 级别 31)或更高版本上,用户可以请求您的 应用程序仅检索大概的位置信息,即使您的应用程序 请求 ACCESS_FINE_LOCATION 运行时权限。
要处理这种潜在的用户行为,请勿请求 ACCESS_FINE_LOCATION 权限本身。相反,请求 ACCESS_FINE_LOCATION 权限和 ACCESS_COARSE_LOCATION 单个运行时请求中的权限。如果您尝试仅请求 ACCESS_FINE_LOCATION,系统会忽略某些版本的请求 Android 12.