我遇到了Android問題,即使用戶打開位置服務後,LocationManager仍然無法找到用戶位置。LocationManager仍然無法找到GPS開啓後的最後一個已知位置
在我開始需要使用用戶的位置我撥打下列活動:
//Menu Activity
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER){
Intent nearby = new Intent(mActivityContext, NearbyActivity.class);
startActivity(nearby);
}else{
alertNoGps();
}
一旦打開GPS附近的活動可以啓動,但的LocationManager仍然無法找到用戶的最後已知位置。我的相關代碼是:
//Nearby Activity
try{
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location != null){
...
}else{
Toast.makeText ...
}
} catch(SecurityException e){
e.printStackTrace();
}
我目前正在測試的手機正在運行Android Marshmallow 6.0.1。如果在應用程序運行android studio之前GPS已經打開,那麼獲取最後一個已知位置是沒有問題的。只有當我在運行應用程序之前關閉GPS並在應用程序運行時將其打開時,我遇到了問題。 LocationManger造成這種情況呢?
編輯:另外在清單中,我有優良和粗略的位置權限。我不知道這是否是API 23及以上版本的問題,因爲需要額外的權限檢查,但我必須想象它們仍然由安全例外處理。