Si ya tengo ACCESS_FINE_LOCATION, ¿puedo omitir ACCESS_COARSE_LOCATION?

89

Tengo una aplicación de GPS que ya solicita ACCESS_FINE_LOCATIONpermiso en el manifiesto, ahora quiero agregar una biblioteca (MoPub) que requiere ACCESS_COARSE_LOCATION.

¿Estoy en lo correcto al suponer que ACCESS_FINE_LOCATIONes suficiente y puedo omitirlo en ACCESS_COARSE_LOCATIONmi manifiesto?

charliefortune
fuente

Respuestas:

153

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

Nota: Si está utilizando tanto NETWORK_PROVIDER como GPS_PROVIDER, debe solicitar solo el permiso ACCESS_FINE_LOCATION, ya que incluye permiso para ambos proveedores. (El permiso para ACCESS_COARSE_LOCATION incluye permiso solo para NETWORK_PROVIDER).

En resumen: sí, no es necesario ACCESS_COARSE_LOCATIONsi ya lo ha definido ACCESS_FINE_LOCATION.

Connor Tumbleson
fuente
13
+1 pero, curiosamente, el documento de Google Maps recomienda usar ambos: developers.google.com/maps/documentation/android/…
alex
3
¿Quizás para teléfonos que tienen capacidades de red pero no GPS?
Nicklas A.
2
@NicklasA. lógicamente, eso no debería afectar el hecho de que "fino" incluye "grueso" - simplemente faltará el proveedor que falta. Además, si fuera necesario para ese caso, esperaría que los documentos de Google lo digan.
ToolmakerSteve
9
Actualización sobre el comentario de @ alex: Google Maps ahora dice explícitamente que solo necesita solicitar un permiso. developers.google.com/maps/documentation/android-api/location
Klox
15

Depende de tu necesidad.

Permiso sabio, ACCESS_FINE_LOCATIONincluye ACCESS_COARSE_LOCATION. Sin embargo, hay una trampa:

ACCESS_COARSE_LOCATIONle brinda la última ubicación conocida que es compatible con la batería https://developer.android.com/training/location/retrieve-current.html#setup
Por ejemplo, si su aplicación hace algo como recomendaciones basadas en la ubicación, la última ubicación conocida es suficientemente bueno.
Esto depende de los servicios de Google Play.

Sin embargo, si necesita algo como una ubicación en vivo / en tiempo real como Pokemon Go, utilícelo para ACCESS_FINE_LOCATION
obtener una ubicación en vivo / en tiempo real. Deberá usar una LocationListener
última vez que verifiqué, esto no requiere los servicios de Google Play

Ericn
fuente
¿Sería útil este permiso para escanear Bluetooth LE?
IgorGanapolsky
@ericn, ¿quizás puedas ayudarme con problemas de ubicación? stackoverflow.com/questions/63917764/… Tengo un comportamiento muy extraño cuando escucho oraciones NMEA.
Viktor Apoyan