2017-10-11 53 views
-6

我正在開發一個通過NETWORK_PROVIDER實現位置的Android應用程序,但我在執行Android 7時遇到問題(雖然它在以前的版本中正確工作)。這是代碼:Android應用程序崩潰getLastKnownLocation()

LocationManager posM; 
double latitude; 
double longitude; 

List<Address> addresses = null; 

try { 
    posM = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Location location = posM.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 

    Geocoder geocoder; 

    geocoder = new Geocoder(Activity1.this, Locale.getDefault()); 

    addresses = geocoder.getFromLocation(latitude, longitude, 1); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

我不知道爲什麼它崩潰Android上的7 ...謝謝大家幫忙

+5

請添加堆棧跟蹤 – JFPicard

+0

顯示錯誤堆棧跟蹤 –

+0

對不起,我怎樣才能在手機上得到錯誤stacktrace? – Pietro

回答

1

因爲getLastKnownLocation回報空的大部分時間。系統通常不知道您的location。使用requestLocationUpdatesrequestSingleUpdate打開location檢測並獲取實際位置。

+0

謝謝,但爲什麼只有在Android 7上纔會發生?它可以在5 ... – Pietro

+1

上完美工作,取決於系統是否有一個它已經知道的位置,並且在任何操作系統上都沒有失效。事實上,你看到它在7而不是5是巧合。也許你有另一個應用程序在你的5設備上使用位置,而不是你的7。或者緩存代碼可能會被掛起一點。但它可以並且會在任何操作系統版本上發生。 getLastKnownLocation可以用作優化,但從不依賴。 –