When should I use ACCESS_COARSE_LOCATION permission?

坚强是说给别人听的谎言 提交于 2019-12-03 07:21:14

问题


I am building an Android app that will track the user's geolocation and draw their route on a map.

I am using the Google Play Services location API, as described here.

It is intuitive that my application requires the ACCESS_FINE_LOCATION permission, which I put in the manifest:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Do I also need the ACCESS_COARSE_LOCATION permission? What's the use case where I need the coarse location?


回答1:


Do I also need the ACCESS_COARSE_LOCATION permission?

No.

What's the use case where I need the coarse location?

If you do not ask for ACCESS_FINE_LOCATION, but you need location data, and you are willing for that data to be fuzzy (say, up to around a city block from the user's position). In the case of LocationManager, you can only use the NETWORK_PROVIDER; in the case of the Play Services fused location provider, they should handle this internally.

Once upon a time, long long ago, users were told at install time whether the app wanted coarse or fine location access. Users might accept apps that wanted coarse access but reject apps that wanted fine access.

Since the UI for this has changed, and users would have a fair bit of difficulty determining whether an app wants coarse or fine location permission, I suspect that most developers just ask for fine location permission. That being said, if you know that your app does not need that level of accuracy (e.g., you want the location for a weather forecast), asking for coarse location permission is a nice "tip of the hat" in the direction of privacy and may prove beneficial once again in the future.




回答2:


No you don't need to use coarse location.

Coarse location is for network provider's location and fine location is for both GPS provider and network location provider. So fine location covers both and you don't need to use anther one.

In order to receive location updates from NETWORK_PROVIDER or GPS_PROVIDER, you must request the user's permission by declaring either the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission, respectively, in your Android manifest file. Without these permissions, your application will fail at runtime when requesting location updates.

If you are using both NETWORK_PROVIDER and GPS_PROVIDER, then you need to request only the ACCESS_FINE_LOCATION permission, because it includes permission for both providers. Permission for ACCESS_COARSE_LOCATION allows access only to NETWORK_PROVIDER.

This is a link for your reference.




回答3:


Location can be determined by two ways:

Using NETWORK_PROVIDER
Using GPS_PROVIDER
  1. Using NETWORK_PROVIDER

    Android permissions required for using this provider are either ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION.

  2. Using GPS_PROVIDER

    Android permissions required for using this provider are only ACCESS_FINE_LOCATION



来源:https://stackoverflow.com/questions/35869610/when-should-i-use-access-coarse-location-permission

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!