我創建了一個應用程序顯示位置與網絡提供商或GPS提供商用戶選擇 通過複選框。當用戶選擇不啓用GPS工作fine.But當用戶選擇GPS啓用第一時間在緊密區域調試後進入家庭崩潰......重複在開放區域工作......並沒有問題的工作,並在家裏。 會發生什麼?我如何避免這個錯誤?需要更改代碼才能使用不同代碼的應用程序自動選擇最佳的供應商?(沒有用戶)這是我的代碼....當用戶檢查GPS提供商時,強行關閉
// Get the location manager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Define the criteria how to select the locatioin provider -> use
// default
if(gps_en==true){ //In previous activity with checkbox user choice preferences
provider = LocationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
// Initialize the location fields
if (location != null) {
System.out.println("Provider " + provider + " has been selected.");
onLocationChanged(location);
} else {
latituteField.setText("Location not available");
longitudeField.setText("Location not available");
}
}
else{
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
// Initialize the location fields
if (location != null) {
System.out.println("Provider " + provider + " has been selected.");
onLocationChanged(location);
} else {
latituteField.setText("Location not available");
longitudeField.setText("Location not available");
}
}
java.lang.NullPointerException
loc.LocTracker.onSensorChanged(LocTracker.java:769)
android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:580)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4482)
java.lang.reflect.Method.invokeNative(Native Method)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
dalvik.system.NativeStart.main(Native Method)
您能否提供我更好的辦法我的代碼的這一點? 權限還行。我想要應用自動選擇最佳供應商GPS或網絡 精度準則第一。 從網絡提供商開始,如果GPS提供商有更好的準確性,如果 用戶在開放區域的應用程序使用GPS提供商。 謝謝。
您應該發佈顯示崩潰/異常的LogCat代碼片段。 – Ridcully 2013-05-01 17:11:01
我用LogCat更新它 – 2013-05-01 17:59:53