getLastKnownLocation()即使有最好的提供商空返回(getLastKnownLoc

2019-10-17 20:07发布

这是我使用来获取当前位置的代码:

mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
best = mgr.getBestProvider(criteria, true);
if (best == null) {
    //ask user to enable atleast one of the Location Providers
} else {
    Location location = mgr.getLastKnownLocation(best);
//But sometimes it returns null
}

几乎每次best = network

但它不提供有时的位置

mgr.getLastKnownLocation(best) returns null

也:

onResume() {
    mgr.requestLocationUpdates(best, 15000, 10, this);
}

onPause() {
    mgr.removeUpdates(this);
}

是否有这样的情况下,任何替代?

一个可能的办法

List<String> providers = mgr.getAllProviders();

存储所有的供应商和1走1,但从来没有看到这个推荐的任何地方。 此外,要求的最佳供应商是什么样的文档建议。

Answer 1:

getLastKnownLocation()如果供应商最近已被使用只返回一个定位对象的提供者。 如果它没有被最近,Android的假设,无论是由供应商提供的最后一个位置是过时和错误的,并返回null。

在这种情况下,你将不得不等待您的LocationListener的的onLocationChanged()方法被调用你有一个可用的位置之前。



文章来源: getLastKnownLocation() returns null even with best provider