web-dev-qa-db-fra.com

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

J'ai une application GPS qui demande déjà ACCESS_FINE_LOCATION autorisation 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_LOCATION suffit, et je peux laisser de côté ACCESS_COARSE_LOCATION de mon manifeste?

76
charliefortune

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'avez pas besoin de ACCESS_COARSE_LOCATION si vous avez déjà défini ACCESS_FINE_LOCATION.

129
Connor Tumbleson

Dépend de votre besoin.

Autorisation sage, ACCESS_FINE_LOCATION comprend ACCESS_COARSE_LOCATION. Cependant, il y a un hic:

ACCESS_COARSE_LOCATION vous 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 la localisation, la dernière position connue est suffisante.
Cela dépend des services Google Play

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

10
ericn