![](/img/trans.png)
[英]android getLastKnownLocation() return always return null
[英]android getlastknownlocation always null in emulator
這似乎是一個常見問題,但我真的不明白為什么會發生,即使我閱讀了大量類似的問題。
我正在模擬器設備上使用基本位置類,我設置了所有內容 - 權限(FINE 和 COARSE),我已經在 DDMS 中設置了坐標,我也嘗試使用 telnet 然后,但無論如何它總是因空指針而崩潰getlastknownlocation 線上的異常,有什么想法這里有什么問題嗎?
public class MainActivity extends Activity implements LocationListener {
private static LocationManager ok;
private Location L;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ok=(LocationManager)this.getSystemService(ok.GPS_PROVIDER);
L=ok.getLastKnownLocation(ok.GPS_PROVIDER);
}
@Override
public void onLocationChanged(Location Loc) {
try {
double latop=Loc.getLatitude();
double longe=Loc.getLongitude();
Log.i("OK", "and"+longe+""+latop);
} catch (NullPointerException e)
{
}
}
getLastKnownLocation()
通常將返回null
,如果最近沒有應用程序從您想要的提供程序請求位置修復。
在模擬器上,它似乎更進了一步:除非您的應用程序調用了requestLocationUpdates()
否則除非已將位置傳送到模擬器,否則您不會獲得位置。
使用getLastKnownLocation()
的一般模式,如果您希望獲得實際Location
幾率相當可觀,則使用requestLocationUpdates()
和removeLocationUpdates()
來確保LocationManager
通過您選擇的提供商主動尋找位置。 當然,如果您願意,您也可以使用LocationListener
和onLocationChanged()
而不是getLastKnownLocation()
。
@CommonsWare 的回答很明確。 要在模擬器上獲得非空,請轉到Google Maps
應用程序,然后您會獲得一些位置
還有另一種選擇,使用 locationManager.addTestProvider() 創建你自己的提供者; 這樣您就可以進行自己的測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.