如果我已经拥有ACCESS_FINE_LOCATION,可以省略ACCESS_COARSE_LOCATION吗?


88

我有一个GPS应用程序,该应用程序已经ACCESS_FINE_LOCATION在清单中请求许可,现在我想添加一个需要的库(MoPub)ACCESS_COARSE_LOCATION

我以为ACCESS_FINE_LOCATION就足够了,我可以排除ACCESS_COARSE_LOCATION清单上的错误吗?

Answers:


152

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


13
+1但奇怪的,谷歌地图文档建议使用这两种:developers.google.com/maps/documentation/android/...
亚历克斯

3
也许对于具有网络功能但没有GPS的电话?
Nicklas A. 2014年

2
@尼克拉斯 从逻辑上讲,这不应影响“精细”包括“粗略”的事实-缺少的提供程序将完全丢失。此外,如果需要这种情况,那么我希望Google文档会这样说。
ToolmakerSteve

9
更新@alex的评论:Google Maps现在明确表示您只需要请求一个权限。developers.google.com/maps/documentation/android-api/location
Klox

15

取决于您的需要。

允许明智的做法,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
It来提供实时/实时位置信息。您需要使用LocationListener
我上次检查的时间,这不需要Google Play服务


此权限对Bluetooth LE扫描有用吗?
IgorGanapolsky

@ericn也许您可以帮助我解决位置问题?stackoverflow.com/questions/63917764/…当听NMEA句子时,我的行为很奇怪。
Viktor Apoyan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.