98 votes

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 dans le manifeste, je veux maintenant ajouter une bibliothèque (MoPub) qui requiert la permission de ACCESS_COARSE_LOCATION .

Ai-je raison de supposer que ACCESS_FINE_LOCATION est suffisant, et je peux laisser de côté ACCESS_COARSE_LOCATION de mon manifeste ?

171voto

Connor Tumbleson Points 2426

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 uniquement l'autorisation 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 .

19voto

fuzzybee Points 623

Cela dépend de vos besoins.

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

ACCESS_COARSE_LOCATION vous donne la dernière position connue, ce qui ménage les batteries 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 localisation connue est suffisante.
Celui-ci a un Dé dépendance à l'égard de Google Play Services

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

2voto

هيثم Points 31

Mise à jour

Sur Android 12 (niveau 31 de l'API) ou supérieur, les utilisateurs peuvent demander à ce que votre application ne récupère que des informations de localisation approximatives, même lorsque votre application demande la permission d'exécution ACCESS_FINE_LOCATION.

Pour gérer ce comportement potentiel de l'utilisateur, ne demandez pas l'autorisation ACCESS_FINE_LOCATION seule. Au lieu de cela, demandez à la fois l'autorisation ACCESS_FINE_LOCATION et l'autorisation ACCESS_COARSE_LOCATION dans une seule demande d'exécution. Si vous essayez de demander uniquement ACCESS_FINE_LOCATION, le système ignore la demande sur certaines versions d'Android 12. .

Vérifiez cette url : https://developer.Android.com/training/location/permissions#approximate-request

1voto

Nafis Kabbo Points 11

Différence :

https://developer.Android.com/training/location/permissions#accuracy https://developer.Android.com/training/location/permissions#approximate-request

Vous devez demander les deux autorisations.

Approximativement Fournit une estimation de l'emplacement de l'appareil, à environ 1,6 km près. Votre application utilise ce niveau de précision de la localisation lorsque vous déclarez l'autorisation ACCESS_COARSE_LOCATION mais pas l'autorisation ACCESS_FINE_LOCATION. Précision Fournit une estimation de l'emplacement de l'appareil qui est aussi précise que possible, généralement à environ 50 mètres (160 pieds) et parfois à 10 pieds (un mètre) près. parfois à une précision de 10 pieds (quelques mètres) ou plus. Votre application utilise ce niveau de précision de la localisation lorsque vous déclarez l'option permission ACCESS_FINE_LOCATION.

Si l'utilisateur accorde l'autorisation de localisation approximative, votre application ne fait que n'a accès qu'à la localisation approximative, quelle que soit la localisation votre application déclare.

Votre application devrait continuer à fonctionner si l'utilisateur n'accorde qu'une autorisation approximative. l'accès à la localisation. Si une fonctionnalité de votre application nécessite absolument l'accès à la localisation précise en utilisant la permission ACCESS_FINE_LOCATION, vous pouvez demander à l'utilisateur d'autoriser votre application à accéder à la localisation précise. ``

Puis dans Android 12 les changements de permission

Sur Android 12 (niveau 31 de l'API) ou supérieur, les utilisateurs peuvent demander que votre que votre application ne récupère que des informations de localisation approximatives, même lorsque votre app demande la permission d'exécution ACCESS_FINE_LOCATION.

Pour gérer ce comportement potentiel de l'utilisateur, ne demandez pas l'autorisation l'autorisation ACCESS_FINE_LOCATION seule. Au lieu de cela, demandez à la fois l'autorisation l'autorisation ACCESS_FINE_LOCATION et l'autorisation ACCESS_COARSE_LOCATION en une seule demande d'exécution. Si vous essayez de demander uniquement ACCESS_FINE_LOCATION, le système ignore la demande dans certaines versions d'Android 12. d'Android 12.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X