9

Recientemente probamos nuestra aplicación contra los niveles 14 y 15 de la API de Android. Comenzamos la orientación de desarrollo SKD Versión 8 mínima y excluimos las tabletas (3.x).
Con 2.x todo funciona bien, pero al ejecutar la aplicación en un droide 4.x se bloquea en el punto en que obtenemos la ubicación del usuario.IllegalArgumentException lanzado por requestLocationUpdate()

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to create service java.lang.IllegalArgumentException: provider=network 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2263) 
at android.app.ActivityThread.access$1600(ActivityThread.java:123) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.IllegalArgumentException: provider=network 
at android.os.Parcel.readException(Parcel.java:1331) 
at android.os.Parcel.readException(Parcel.java:1281) 
at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:646) 
at android.location.LocationManager._requestLocationUpdates(LocationManager.java:582) 
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:446) 
at package.name.LocationGetter.onCreate(LocationGetter.java:63) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2253) 
... 

Fuente:

public void onCreate() { 
    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 300000, 500, locationListener); 
    super.onCreate(); 
} 

De acuerdo con la documentation un IAE se lanza if provider or listener is null. Sin embargo, he registrado el proveedor y el oyente. (el último a toString()) y no son nulos.

Viniendo de this question Encontré open issue. Sin embargo, me preguntaba cómo las personas que tienen más confianza con el sándwich de helado solicitan las coordenadas del usuario.
The tutorial que conozco utiliza el mismo enfoque descrito anteriormente.

+1

Creo que debería hacer el 'super()' la primera llamada de su 'onCreate()' ... Me gustaría probar esto :) –

+0

Sí, siempre luchando dónde ponerlo. De todos modos, el problema todavía existe. – yoshi

+0

Tiene el mismo problema. Me pregunto si es un problema de emulador o también un verdadero problema con el dispositivo ICS. –

Respuesta

2
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 300000, 500, locationListener); 

En el uso de este código LocationManager.NETWORK_PROVIDER cuando se prueba que asegurarse de que la red está utilizando como WiFi está disponible o si está insertada la tarjeta SIM en el dispositivo y la red está disponible en él.

También puede probar usando LocationManager.GPS_PROVIDER pero asegúrese de que antes de usar el GPS está encendido del dispositivo

+0

Sí WiFi está disponible. (De lo contrario, no podría publicar esto: P). – yoshi

Cuestiones relacionadas