这似乎是一个常见问题,但我真的不明白为什么会发生,即使我阅读了大量类似的问题。
我在模拟器设备上玩一个基本的位置类,我设置了一切 - 权限(精细和粗糙),我已经在 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()
。
关于java - android getlastknownlocation 在模拟器中始终为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21583015/