Se eu já tiver ACCESS_FINE_LOCATION, posso omitir ACCESS_COARSE_LOCATION?

89

Eu tenho um aplicativo GPS que já solicita ACCESS_FINE_LOCATIONpermissão no manifesto, agora quero adicionar uma biblioteca (MoPub) que requer ACCESS_COARSE_LOCATION.

Estou certo ao presumir que isso ACCESS_FINE_LOCATIONé suficiente e posso omitir ACCESS_COARSE_LOCATIONmeu manifesto?

Charliefortune
fonte

Respostas:

155

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

Observação: se você estiver usando NETWORK_PROVIDER e GPS_PROVIDER, precisará solicitar apenas a permissão ACCESS_FINE_LOCATION, porque inclui permissão para ambos os provedores. (A permissão para ACCESS_COARSE_LOCATION inclui permissão apenas para NETWORK_PROVIDER.)

Resumindo: sim, você não precisa ACCESS_COARSE_LOCATIONse já definiu ACCESS_FINE_LOCATION.

Connor Tumbleson
fonte
13
+1, mas estranhamente, o documento do Google Maps recomenda o uso de ambos: developers.google.com/maps/documentation/android/…
alex
3
Talvez para telefones com recursos de rede, mas sem GPS?
Nicklas A.
2
@NicklasA. logicamente, isso não deve afetar o fato de que "fino" inclui "grosso" - o provedor ausente simplesmente estará ausente. Além disso, se fosse necessário para esse caso, eu esperaria que os documentos do Google o dissessem.
Toolmaker Steve
10
Atualização sobre o comentário de @ alex: O Google Maps agora diz explicitamente que você só precisa solicitar uma permissão. developers.google.com/maps/documentation/android-api/location
Klox
17

Depende da sua necessidade.

Permissão sábia, ACCESS_FINE_LOCATIONinclui ACCESS_COARSE_LOCATION. No entanto, há um porém:

ACCESS_COARSE_LOCATIONfornece a última localização conhecida que não agrega bateria https://developer.android.com/training/location/retrieve-current.html#setup
Por exemplo, se seu aplicativo faz algo como recomendações baseadas em localização, a última localização conhecida é bom o bastante.
Isto tem uma dependência de serviços Google Play

No entanto, se você precisa de algo como localização ao vivo / em tempo real, como Pokémon Go, use ACCESS_FINE_LOCATION
It fornece a localização ao vivo / em tempo real. Você precisará usar uma LocationListener
última vez que verifiquei, isso não requer o Google Play Services

Ericn
fonte
Esta permissão seria útil para varredura Bluetooth LE?
IgorGanapolsky
@ericn talvez você possa me ajudar com problemas de localização? stackoverflow.com/questions/63917764/… Tenho um comportamento muito estranho ao ouvir frases NMEA.
Viktor Apoyan,