2013-01-22 6 views
6

La mia app richiede solo dati di localizzazione molto approssimativi, quindi inizialmente ho impostato le autorizzazioni manifest a ACCESS_COARSE_LOCATION e impostato un listener di ubicazione per NETWORK_PROVIDER. Questo mi ha dato esattamente il tipo di stima approssimativa di cui avevo bisogno, ma solo con Google Location Services attivato.Ottieni * posizione grossolana * dal provider GPS su Android

Mi aspettavo che se l'utente avesse solo il GPS abilitato, avrei comunque ricevuto una stima approssimativa della loro posizione. Ma sembra che l'unico modo per ottenere QUALSIASI informazione sulla posizione dallo GPS_PROVIDER sia usando l'autorizzazione ACCESS_FINE_LOCATION.

Quindi, è vero che con il solo GPS abilitato, un'app non può ricevere informazioni sulla posizione a meno che non disponga dell'autorizzazione ACCESS_FINE_LOCATION? In altre parole, lo GPS_PROVIDER non può inviare stime approssimative della posizione se l'app dispone solo dell'autorizzazione ACCESS_COARSE_LOCATION?

risposta

6

Quindi, è vero che con il solo GPS abilitato, un'app non può ricevere informazioni sulla posizione a meno che non disponga dell'autorizzazione ACCESS_FINE_LOCATION?

In generale, sì.

Citando the documentation for LocationManager:

Se l'applicazione ha solo il permesso di massima allora non avrà accesso al GPS o fornitori di posizione passiva. Altri fornitori continueranno a restituire i risultati della posizione, ma la velocità di aggiornamento verrà limitata e la posizione esatta verrà offuscata fino a un livello di accuratezza approssimativo.

 

In altre parole, il GPS_PROVIDER non può inviare stime posizione grezzi se l'applicazione ha solo il permesso ACCESS_COARSE_LOCATION?

Citando il Android 4.2 release notes:

Rispetto alle versioni precedenti di Android, i risultati di localizzazione degli utenti possono essere meno preciso se la vostra applicazione richiede il permesso ACCESS_COARSE_LOCATION ma non richiede il permesso ACCESS_FINE_LOCATION. Per soddisfare le aspettative sulla privacy degli utenti quando la tua app richiede un'autorizzazione per la posizione approssimativa (e non per la posizione precisa), il sistema non fornirà una stima della posizione dell'utente più precisa di un blocco di città.

Tuttavia, presumo che ciò non sostituisca l'affermazione "non avrà accesso al GPS" da LocationManager. Suppongo che questo significhi che i dati NETWORK_PROVIDER potrebbero essere inibiti, se ritenuto troppo accurato.

+0

Questo è troppo male. Sarebbe bello se GPS_PROVIDER potesse ancora restituire stime approssimative se è richiesta solo l'autorizzazione CORSO. – Josh