Gerente de localización problema para helado sandwhich
¿Puede alguien explicarme cuál es este error? Estoy consiguiendo solamente para androide 4 + y no para abajo:
E/AndroidRuntime(891): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.getaddress/com.example.getaddress.MainActivity}: java.lang.IllegalArgumentException: requested provider network doesn't exisit
- Android - No se puede obtener la ubicación del GPS en el emulador
- Android emulador geo arreglo no puede establecer la ubicación GPS
- Actualizaciones de ubicación de fondo android y wakelock
- Cómo obtener el número de satélites del objeto Ubicación
- Activar el GPS en los dispositivos enraizados
- ¿Cuáles son las mejores prácticas para la arquitectura de la aplicación Android basada en la ubicación?
- Se pierde el proveedor de Android Fused Location
- ¿Cómo puedo volver a mi actividad desde la ventana de configuración de GPS
- Desactivar GPS mediante programación
- ¿Hay una manera de descargar el almanaque GPS?
- El administrador de ubicaciones de Android devuelve las mismas coordenadas GPS cada vez
- Cómo encontrar la ubicación del GPS en Android de forma periódica
- ¿Cómo puedo obtener el nombre de la ciudad de mi posición actual?
Parece que el proveedor de ubicación NETWORK_PROVIDER no es accesible en los emuladores de Android 4+ sin las API de Google ( bueno, en realidad no he probado en todos ellos, consulte a continuación ). Los dispositivos reales que he probado están bien con él (pero todos ellos tienen servicios de Google en ellos, sería interesante probar con las versiones personalizadas, limpias de Android, tal vez con Kindles?).
No se trata de activar / desactivar el proveedor en la configuración del dispositivo, simplemente no está en el emulador.
Síntoma
Básicamente este código:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,mLocListener);
Causará la siguiente excepción:
java.lang.IllegalArgumentException: provider doesn't exisit: null
En todos los emuladores Android 4 + desnudos (en contraposición a los emuladores vinculados a Google)
Nota: el error tipográfico en "exisit" está en la línea de registro actual.
Diagnóstico
Obtener una lista de todos los proveedores de ubicación en el dispositivo de destino con lo siguiente:
List<String> providers = locationManager.getAllProviders();
Puedo ver que el proveedor de la red está presente en
- Dispositivos físicos
- Android 2.3.3 emulador (sin API de Google)
- Android nivel 17 (4.2) emulador (con API de Google)
Pero no en
- Android nivel 15 (4.0.3) emulador con API de Google
- Android 4.2 emulador (sin API de Google)
Mi conjetura es que por razones no técnicas, Google no ha permitido el servicio de ubicación de red en AOSP y ha limitado su uso a las versiones vinculadas a Google del sistema operativo a partir de 4.2 (?).
Lo que no sé si existe o no un servicio de ubicación de red de reemplazo en dispositivos que no sean de Google (como Kindle).
Probable impacto en tu aplicación
No esperaría que esto tuviera algún impacto en la mayoría de los smartphones y tabletas. Sin embargo, puede
- Afectan en algo su capacidad para
- Ser un problema de compatibilidad para usuarios que usan versiones personalizadas / que no son de Google de Android (una vez más, Kindle?)
Cómo detectar
Una prueba simple como:
locationManager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER)
Puede decirle sin dolor si el proveedor de red está presente en el dispositivo. Tenga en cuenta que si está presente, pero el usuario no lo ha activado, su LocationListener recibirá una devolución de llamada onProviderDisabled después de la solicitud de ubicación.
- ¿Cómo obtener el enlace webview iframe para iniciar el navegador?
- Android.widget.TextView no se puede convertir en android.view.ViewGroup