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?

charliefortune
quelle

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.

Connor Tumbleson
quelle
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

ericn
quelle
Wäre diese Berechtigung für das Scannen von Bluetooth LE hilfreich?
IgorGanapolsky