Android LocationManager.isProviderEnabled () siempre devuelve false
Tengo una aplicación que utiliza el proveedor de la red para su ubicación. Cada vez que se inicia la aplicación, comprueba si el proveedor de red está habilitado mediante el método isProviderEnabled () en LocationManager. Si devuelve false presento una alerta al usuario para habilitar Network Provider y luego usar la aplicación. Esta lógica ha funcionado muy bien, con algunas excepciones con dispositivos no certificados por Google (no es una preocupación ya que, por lo general, no tienen la API de Google Maps tampoco). Últimamente, con algunos dispositivos en ICS y ahora en el emulador de JellyBean obtengo un "false" consistente para isProviderEnabled () aunque esté habilitado.
Desde entonces me he mudado a usar la cadena devuelta de Settings.Secure.getString (getContentResolver (), Settings.Secure.LOCATION_PROVIDERS_ALLOWED)) para ver si contiene "red". Es un hack pero está funcionando por ahora. Me encantaría poder usar el método isProviderEnabled ().
- El método getLastKnownLocation devuelve siempre null
- ¿Debo usar android LocationManager.getBestProvider cada vez que solicito actualizaciones de ubicación?
- ¿Cómo puede obtener una ubicación en android cuando todos los proveedores de ubicación están inhabilitados?
- Cómo obtener una referencia a LocationManager dentro de un fragmento
- IsProviderEnabled (LocationManager.NETWORK_PROVIDER) devuelve false
¿Alguien ha visto este problema antes?
- Especificar intervalos para que el Administrador de ubicaciones transmita la ubicación actual en Android
- ¿Existe una alternativa al Cliente de ubicación (API de Google Play)?
- Permiso de comprobación de Android para LocationManager
- ¿Por qué no se llama al método onProviderEnabled () de Android?
- Android didUpdateHeading (gerente de locación)?
- Forzar la alerta de proximidad para usar Proveedor de red
- GeoTagging Photo's después de usar Camera Intent
- OnPause para detener LocationManager
Desde el doc del API para: LocationManager.GPS_PROVIDER
Este proveedor determina la ubicación mediante satélites. Dependiendo de las condiciones, este proveedor puede tardar un tiempo en devolver una corrección de ubicación. Requiere el permiso ACCESS_FINE_LOCATION.
Así que si no estás requiriendo ACCESS_FINE_LOCATION, volverá false.
@naqi @gkris También noté este problema donde isProviderEnabled(LocationManager.GPS_PROVIDER)
estaba devolviendo false
.
Solución a esto es también pedir al usuario que defina el Location Method
de High Accuracy
lugar de Battery Saving
de Battery Saving
o Device Only
Esta configuración está disponible en configuración de ubicación y tiene nombre diferente en dispositivos diferentes. En algunos dispositivos que he probado encendido, esta configuración está con el Mode
conocido, el Mode
Location Mode
, el Location Method
etc. También el valor puede ser High Accuracy
o GPS
o GPS, Wifi and Mobile Networks
Los desarrolladores tendrán que entrenar a los usuarios en esto.
- Google Maps Android V2 y API de dirección
- Android – No se puede crear forma de rectángulo simple … UnsupportedOperationException?