Kann ich ACCESS_COARSE_LOCATION weglassen, wenn ich bereits über ACCESS_FINE_LOCATION verfüge?


84

Ich habe eine GPS-App, die bereits die ACCESS_FINE_LOCATIONErlaubnis im Manifest anfordert. Jetzt möchte ich eine Bibliothek (MoPub) hinzufügen, die erforderlich ist ACCESS_COARSE_LOCATION.

Habe ich Recht, wenn ich davon ausgehe, dass dies ACCESS_FINE_LOCATIONausreicht, und ich kann ACCESS_COARSE_LOCATIONmein Manifest weglassen?

Antworten:


148

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

Hinweis: Wenn Sie sowohl NETWORK_PROVIDER als auch GPS_PROVIDER verwenden, müssen Sie nur die Berechtigung ACCESS_FINE_LOCATION anfordern, da diese die Berechtigung für beide Anbieter enthält. (Die Berechtigung für ACCESS_COARSE_LOCATION enthält nur die Berechtigung für NETWORK_PROVIDER.)

Kurzum: Ja, Sie brauchen nicht, ACCESS_COARSE_LOCATIONwenn Sie bereits definiert haben ACCESS_FINE_LOCATION.


12
+1, aber seltsamerweise empfiehlt Google Maps doc, beide zu verwenden: developer.google.com/maps/documentation/android/…
— alex

3
Vielleicht für Telefone mit Netzwerkfunktionen, aber ohne GPS?
— Nicklas A.

2
@ NicklasA. Dies sollte logischerweise nicht die Tatsache beeinflussen, dass "fein" "grob" enthält - der fehlende Anbieter wird einfach fehlen. Wenn es für diesen Fall benötigt würde, würde ich erwarten, dass Google Docs dies sagt.
— ToolmakerSteve

9
Update zum Kommentar von @ alex: Google Maps sagt jetzt ausdrücklich, dass Sie nur eine Berechtigung anfordern müssen. Entwickler.google.com/maps/documentation/android-api/location
— Klox

13

Kommt auf deine Bedürfnisse an.

Erlaubnis weise ACCESS_FINE_LOCATIONbeinhaltet ACCESS_COARSE_LOCATION. Es gibt jedoch einen Haken:

ACCESS_COARSE_LOCATIONgibt Ihnen den zuletzt bekannten Standort an, der batteriefreundlich ist https://developer.android.com/training/location/retrieve-current.html#setup
Wenn Ihre App beispielsweise standortbezogene Empfehlungen ausführt, ist der zuletzt bekannte Standort gut genug.
Dies hängt von Google Play Services ab

Wenn Sie jedoch einen Live- / Echtzeit-Standort wie Pokemon Go benötigen, verwenden ACCESS_FINE_LOCATION
Sie It, um einen Live- / Echtzeit-Standort zu erhalten. Wenn Sie das LocationListener
letzte Mal nachgesehen haben, müssen Sie Google Play Services nicht verwenden


Wäre diese Berechtigung für das Scannen von Bluetooth LE hilfreich?
— IgorGanapolsky
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.