2012-07-11 35 views
10

Tengo una aplicación que utiliza el proveedor de red para su ubicación. Cada vez que se inicia la aplicación, comprueba si el proveedor de red está habilitado con el método isProviderEnabled() en LocationManager. Si devuelve falso, presento una alerta al usuario para habilitar el proveedor de la red y luego uso 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, tampoco tienen la API de Maps). Últimamente, con algunos dispositivos en ICS y ahora en el emulador JellyBean obtengo un "falso" consistente para isProviderEnabled() aunque esté habilitado.Android LocationManager.isProviderEnabled() siempre devuelve falso

He pasado a utilizar la cadena devuelta desde Settings.Secure.getString (getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED)) para ver si contiene "network". Es un truco pero funciona por ahora. Me encantaría poder usar el método isProviderEnabled().

¿Alguien ha visto este problema antes?

+2

¡También me estoy enfrentando a este problema! ¿Tienes algún trabajo para eso? – gkris

Respuesta

0

A partir de la documentación del API para: LocationManager.GPS_PROVIDER

Este proveedor determina ubicación mediante satélites. Dependiendo de las condiciones , este proveedor puede demorar un tiempo para devolver una corrección de ubicación. Requiere el permiso ACCESS_FINE_LOCATION.

Así que si no necesita ACCESS_FINE_LOCATION, devolverá falso.

0

@naqi @gkris También noté este problema donde isProviderEnabled(LocationManager.GPS_PROVIDER) devolvía false.
solución a esto es también pedir al usuario ajustar el Location Method a High Accuracy en lugar de Battery Saving o Device Only

Este ajuste está disponible bajo los parámetros de ubicación y tiene nombre diferente en diferentes dispositivos. En algunos dispositivos que he probado en, este ajuste es con el nombre Mode, Location Mode, Location Method etc También el valor puede ser High Accuracy o GPS o GPS, Wifi and Mobile Networks

Los desarrolladores tendrán que formar a los usuarios en esto.

Cuestiones relacionadas