9

Gần đây chúng tôi đã thử nghiệm ứng dụng của chúng tôi chống lại API Android 14 và 15. Chúng tôi bắt đầu phát triển nhắm mục tiêu tối thiểu SKD phiên bản 8 và không bao gồm máy tính bảng (3.x).
Với mọi thứ 2.x hoạt động tốt nhưng khi chạy ứng dụng trên một droid 4.x nó đổ vỡ tại thời điểm chúng tôi đang có được vị trí của người dùng.IllegalArgumentException được ném bởi 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) 
... 

Nguồn:

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

Theo documentation một IAE được ném if provider or listener is null. Tuy nhiên tôi đã ghi lại nhà cung cấp và người nghe. (sau này thông qua toString()) và chúng không rỗng.

Đến từ this question Tôi tìm thấy một open issue. Tuy nhiên tôi đã tự hỏi làm thế nào mọi người tự tin hơn với các yêu cầu của người dùng kem sandwich.
The tutorial Tôi biết sử dụng cùng một phương pháp được mô tả ở trên.

+1

Tôi nghĩ rằng bạn nên làm cho 'siêu() 'cuộc gọi đầu tiên của bạn' onCreate()' ... Tôi sẽ cố gắng này :) –

+0

Yeah, luôn phải vật lộn nơi để đặt nó. Dù sao - vấn đề vẫn còn tồn tại. – yoshi

+0

Có cùng một vấn đề. Tôi tự hỏi nếu đó là một vấn đề giả lập hoặc cũng là một vấn đề thiết bị ICS thực –

Trả lời

4

Tôi nghĩ rằng đây có thể là một vấn đề với Android Emulator hiện nay.

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

+0

Có, cảm ơn bạn đã chỉ ra. Ngoài ra bình luận # 5 cung cấp một công việc rõ ràng xung quanh: bắt ngoại lệ và sống với nó cho thời điểm này. gnah <. yoshi

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

Trong sử dụng mã của bạn này LocationManager.NETWORK_PROVIDER khi bạn thử nghiệm mà chắc chắn rằng mạng bạn đang sử dụng như WIFI có sẵn hoặc bạn đang chèn thẻ sim trong điện thoại và mạng có sẵn trên đó.

Bạn cũng có thể kiểm tra bằng LocationManager.GPS_PROVIDER nhưng chắc chắn rằng trước khi sử dụng mà GPS là ON các thiết bị

+0

Có WiFi có sẵn. (Nếu không, tôi không thể đăng bài này: P). – yoshi

Các vấn đề liên quan