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 ().

¿Alguien ha visto este problema antes?

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.

  • Calibración GPS androide
  • OnLocationChanged no se llama automáticamente
  • Android GPS Localización Velocidad no fiable
  • El icono de GPS sigue parpadeando después de locationManager.removeUpdates () y estableciendo locationManager en null
  • LocationListener de NETWORK_PROVIDER está habilitado pero, onLocationChanged nunca se llama
  • LocationManager requestLocationUpdates no funciona
  • Ubicación de Android getBearing () devuelve siempre 0
  • Inicio de LocationManager como servicio Android
  • NETWORK_PROVIDER no proporciona ubicaciones actualizadas
  • LocationManager.isProviderEnabled (LocationManager.NETWORK_PROVIDER) no es fiable, ¿por qué?
  • SetTestProviderLocation () no activa la llamada de onLocationChanged ()
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.