Si j'ai déjà ACCESS_FINE_LOCATION, puis-je omettre ACCESS_COARSE_LOCATION?

89

J'ai une application GPS qui demande déjà l' ACCESS_FINE_LOCATIONautorisation dans le manifeste, maintenant je veux ajouter une bibliothèque (MoPub) qui nécessite ACCESS_COARSE_LOCATION.

Ai-je raison de supposer que ACCESS_FINE_LOCATIONc'est suffisant et que je peux omettre ACCESS_COARSE_LOCATIONde mon manifeste?

Charliefortune
la source

Réponses:

153

https://developer.android.com/guide/topics/location/strategies.html#Permission

Remarque: Si vous utilisez à la fois NETWORK_PROVIDER et GPS_PROVIDER, vous devez demander uniquement l'autorisation ACCESS_FINE_LOCATION, car elle inclut l'autorisation pour les deux fournisseurs. (L'autorisation pour ACCESS_COARSE_LOCATION inclut l'autorisation uniquement pour NETWORK_PROVIDER.)

En bref: oui, vous n'en avez pas besoin ACCESS_COARSE_LOCATIONsi vous avez déjà défini ACCESS_FINE_LOCATION.

Connor Tumbleson
la source
13
+1 mais curieusement, le document Google Maps recommande d'utiliser les deux: développeurs.google.com
android/…
3
Peut-être pour les téléphones dotés de capacités réseau mais pas de GPS?
Nicklas A.
2
@NicklasA. logiquement, cela ne devrait pas affecter le fait que «fine» inclut «grossier» - le fournisseur manquant sera simplement absent. De plus, si cela était nécessaire pour ce cas, je m'attendrais à ce que Google docs le dise.
ToolmakerSteve
9
Mise à jour sur le commentaire de @ alex: Google Maps indique désormais explicitement que vous ne devez demander qu'une seule autorisation. developers.google.com/maps/documentation/android-api/location
Klox
15

Dépend de votre besoin.

Permission sage, ACCESS_FINE_LOCATIONcomprend ACCESS_COARSE_LOCATION. Cependant, il y a un hic:

ACCESS_COARSE_LOCATIONvous donne le dernier emplacement connu qui est compatible avec la batterie https://developer.android.com/training/location/retrieve-current.html#setup
Par exemple, si votre application fait quelque chose comme des recommandations basées sur l'emplacement, le dernier emplacement connu est assez bien.
Cela dépend des services Google Play

Cependant, si vous avez besoin de quelque chose comme une localisation en direct / en temps réel comme Pokemon Go, utilisez ACCESS_FINE_LOCATION
Cela vous donne une localisation en direct / en temps réel. Vous devrez utiliser une LocationListener
Dernière fois que j'ai vérifié, cela ne nécessite pas les services Google Play

Ericn
la source
Cette autorisation serait-elle utile pour la numérisation Bluetooth LE?
IgorGanapolsky
@ericn peut-être pouvez-vous m'aider avec des problèmes de localisation? stackoverflow.com/questions/63917764/... J'ai un comportement très étrange lorsque j'écoute des phrases NMEA.
Viktor Apoyan le