Se ho già ACCESS_FINE_LOCATION, posso omettere ACCESS_COARSE_LOCATION?


89

Ho un'app GPS che richiede già l' ACCESS_FINE_LOCATIONautorizzazione nel manifest, ora voglio aggiungere una libreria (MoPub) che richiede ACCESS_COARSE_LOCATION.

Ho ragione nel ritenere che ACCESS_FINE_LOCATIONsia sufficiente e posso tralasciare ACCESS_COARSE_LOCATIONdal mio manifest?

Risposte:


155

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

Nota: se utilizzi sia NETWORK_PROVIDER che GPS_PROVIDER, devi richiedere solo l'autorizzazione ACCESS_FINE_LOCATION, poiché include l'autorizzazione per entrambi i provider. (L'autorizzazione per ACCESS_COARSE_LOCATION include l'autorizzazione solo per NETWORK_PROVIDER.)

In breve: sì, non serve ACCESS_COARSE_LOCATIONse hai già definito ACCESS_FINE_LOCATION.


13
+1 ma stranamente, il documento di Google Maps consiglia di utilizzare entrambi: developers.google.com/maps/documentation/android/…
alex

3
Forse per i telefoni che hanno capacità di rete ma non GPS?
Nicklas A.

2
@NicklasA. logicamente, ciò non dovrebbe influire sul fatto che "fine" include "grossolano": il provider mancante semplicemente mancherà. Inoltre, se fosse necessario per quel caso, mi aspetto che i documenti di Google lo dicano.
ToolmakerSteve

10
Aggiornamento sul commento di @ alex: Google Maps ora dice esplicitamente che devi solo richiedere un'autorizzazione. developer.google.com/maps/documentation/android-api/location
Klox

17

Dipende dalle tue necessità.

Per quanto riguarda il permesso, ACCESS_FINE_LOCATIONinclude ACCESS_COARSE_LOCATION. Tuttavia, c'è un problema:

ACCESS_COARSE_LOCATIONti fornisce l'ultima posizione nota che è compatibile con la batteria https://developer.android.com/training/location/retrieve-current.html#setup
Ad esempio, se la tua app fa qualcosa come i consigli basati sulla posizione, l'ultima posizione nota è abbastanza buono.
Questo ha una dipendenza da Google Play Services

Tuttavia, se hai bisogno di qualcosa come la posizione live / in tempo reale come Pokemon Go, usa ACCESS_FINE_LOCATION
Ti dà la posizione live / in tempo reale. Dovrai usare l' LocationListener
ultima volta che ho controllato, questo non richiede Google Play Services


Questa autorizzazione sarebbe utile per la scansione Bluetooth LE?
IgorGanapolsky

@ericn forse puoi aiutarmi con problemi di posizione? stackoverflow.com/questions/63917764/… Ho un comportamento molto strano durante l'ascolto di frasi NMEA.
Viktor Apoyan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.