getLastKnownLocation() returns 空

getLastKnownLocation() returns null

我在 SO 上阅读了很多关于此主题的问答,但我不得不说其中 none 有效。

我的问题是,即使我启用了 GPS,我也无法获取位置,除非我打开 Google 地图并获取我的位置,然后返回应用程序,这绝对不是用户。

我有以下函数来获取位置。

public Location getCurrentLocation() {
    LocationManager locationManager = (LocationManager) context
            .getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String provider = locationManager.getBestProvider(criteria, true);
    Location myLocation = locationManager.getLastKnownLocation(provider);

    return myLocation;
}

关于如何解决这个问题,我是否遗漏了什么? 我也试过这个 http://developer.android.com/training/location/retrieve-current.html#last-known 但仍然 returns 为空。

提前致谢

Is there anything I'm missing on how to solve this?

GPS 无线电正常断电,因为它们是主要的电池消耗。因此,getLastKnownLocation() 可能经常 return null 或陈旧的位置,因为没有检查位置修复。因此,getLastKnownLocation() 仅在您对位置有兴趣并且没有位置时很高兴时才有用。

如果您需要知道位置,您将需要使用 requestLocationUpdates() 或类似的东西,以使 Android 打开 GPS 收音机并主动尝试找到位置。