96

我有一个已经ACCESS_FINE_LOCATION在清单中请求权限的 GPS 应用程序,现在我想添加一个需要ACCESS_COARSE_LOCATION.

我是否正确假设这ACCESS_FINE_LOCATION已经足够了,我可以ACCESS_COARSE_LOCATION从我的清单中省略?

4

3 回答 3

169

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.

于 2013-03-09T12:43:38.847 回答
18

取决于你的需要。

许可明智,ACCESS_FINE_LOCATION包括ACCESS_COARSE_LOCATION. 但是,有一个问题:

ACCESS_COARSE_LOCATION为您提供电池友好的最后已知位置 https://developer.android.com/training/location/retrieve-current.html#setup
例如,如果您的应用执行基于位置的推荐等操作,则最后已知位置是够好了。
依赖于 Google Play 服务

但是,如果您需要像 Pokemon Go 这样的实时/实时位置,请使用ACCESS_FINE_LOCATION
它为您提供实时/实时位置。您需要使用LocationListener
我上次检查的时间,这不需要 Google Play 服务

于 2016-12-01T02:49:50.120 回答
1

不同之处:

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 的某些版本上忽略该请求。

于 2021-12-27T16:40:57.027 回答