我有一个GPS应用,它已经在清单中请求了ACCESS_FINE_LOCATION权限,现在我想添加一个需要ACCESS_COARSE_LOCATION的库(MoPub)。我假设ACCESS_FINE_LOCATION就足够了,我可以从清单中省略ACCESS_COARSE_LOCATION,这样做对吗?
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
au9on6nz1#
https://developer.android.com/guide/topics/location/strategies.html#Permission注:如果同时使用NETWORK_PROVIDER和GPS_PROVIDER,则只需要请求ACCESS_FINE_LOCATION权限,因为它包括两个提供程序的权限。(ACCESS_COARSE_LOCATION的权限只包括NETWORK_PROVIDER的权限。)简而言之:是的,如果已经定义了ACCESS_FINE_LOCATION,就不需要ACCESS_COARSE_LOCATION。
jxct1oxe2#
看你的需要了。权限方面,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服务
LocationListener
lnlaulya3#
在Android 12(API级别31)或更高版本上,用户可以请求您的应用仅检索大致位置信息,即使您的应用请求ACCESS_FINE_LOCATION运行时权限也是如此。要处理这种潜在的用户行为,请不要单独请求ACCESS_FINE_LOCATION权限,而应在单个运行时请求中同时请求ACCESS_FINE_LOCATION权限和ACCESS_COARSE_LOCATION权限。如果您尝试仅请求ACCESS_FINE_LOCATION,系统会在某些Android 12版本上忽略该请求。Check this url: https://developer.android.com/training/location/permissions#approximate-request
fdbelqdn4#
差异:https://developer.android.com/training/location/permissions#accuracyhttps://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版本上忽略该请求。
4条答案
按热度按时间au9on6nz1#
https://developer.android.com/guide/topics/location/strategies.html#Permission
注:如果同时使用NETWORK_PROVIDER和GPS_PROVIDER,则只需要请求ACCESS_FINE_LOCATION权限,因为它包括两个提供程序的权限。(ACCESS_COARSE_LOCATION的权限只包括NETWORK_PROVIDER的权限。)
简而言之:是的,如果已经定义了
ACCESS_FINE_LOCATION
,就不需要ACCESS_COARSE_LOCATION
。jxct1oxe2#
看你的需要了。
权限方面,
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服务
lnlaulya3#
在Android 12(API级别31)或更高版本上,用户可以请求您的应用仅检索大致位置信息,即使您的应用请求ACCESS_FINE_LOCATION运行时权限也是如此。
要处理这种潜在的用户行为,请不要单独请求ACCESS_FINE_LOCATION权限,而应在单个运行时请求中同时请求ACCESS_FINE_LOCATION权限和ACCESS_COARSE_LOCATION权限。如果您尝试仅请求ACCESS_FINE_LOCATION,系统会在某些Android 12版本上忽略该请求。
Check this url: https://developer.android.com/training/location/permissions#approximate-request
fdbelqdn4#
差异:
https://developer.android.com/training/location/permissions#accuracyhttps://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版本上忽略该请求。