这似乎是一个常见问题,但我真的不明白为什么会发生,即使我阅读了大量类似的问题。

我在模拟器设备上玩一个基本的位置类,我设置了一切 - 权限(精细和粗糙),我已经在 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 通过您选择的提供商主动寻找位置。当然,如果您愿意,您也可以使用 LocationListeneronLocationChanged() 而不是 getLastKnownLocation()

关于java - android getlastknownlocation 在模拟器中始终为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21583015/

10-10 20:19