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.
Creo que debería hacer el 'super()' la primera llamada de su 'onCreate()' ... Me gustaría probar esto :) –
Sí, siempre luchando dónde ponerlo. De todos modos, el problema todavía existe. – yoshi
Tiene el mismo problema. Me pregunto si es un problema de emulador o también un verdadero problema con el dispositivo ICS. –