IllegalArgumentException thrown by requestLocationUpdate()

懵懂的女人 提交于 2019-11-28 03:15:06

问题


We recently tested our application against android API level 14 and 15. We started development targeting minimal SKD Version 8 and excluding tablets (3.x).
With 2.x everything works well but when running the app on a 4.x droid it crashes at the point we're obtaining user's location.

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

Source:

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

According to the documentation an IAE is thrown if provider or listener is null. However I logged the provider and listener. (the latter via toString() ) and they're not null.

Coming from this question I found an open issue. However I was wondering how people that are more confident with ice cream sandwich request user's coordinates.
The tutorial I know of uses the same approach described above.


回答1:


I think this may be an issue with the Android Emulator at present.

See http://code.google.com/p/android/issues/detail?id=21237




回答2:


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

In your code use this LocationManager.NETWORK_PROVIDER when you testing that make sure that the network you are using like WIFI is available or you are inserted sim card in your device and network is available on it.

You may also test using LocationManager.GPS_PROVIDER but make sure before use that GPS is ON of device



来源:https://stackoverflow.com/questions/9990129/illegalargumentexception-thrown-by-requestlocationupdate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!