当前位置: 代码迷 >> Android >> 经典的getLastKnownLocation返回null,试遍了已知方法,均无效
  详细解决方案

经典的getLastKnownLocation返回null,试遍了已知方法,均无效

热度:19   发布时间:2016-04-28 00:08:16.0
经典的getLastKnownLocation返回null,试遍了已知方法,均无效~求助
getLastKnownLocation持续返回null,权限似乎没问题,方法也都是烂熟的方法,真机测试(无SIM卡,百度地图可以正常网络定位),API 4.4.2,minSDK=8,(真机2.3.6),provider得到的是“network”,但getLastKnownLocation就是返回null,还有哪里可能引起这个null呢?实在没招了~
权限设置:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name = "android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

经典代码段:
	// 1. 获得经纬度位置
String context = Context.LOCATION_SERVICE;
LocationManager locationManager = (LocationManager) getSystemService(context);
// 设置位置服务信息
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 取得效果最好的位置服务
String provider = locationManager.getBestProvider(criteria,
true);
locationManager.requestLocationUpdates(provider, 1000, 0,
locationListener);
Location location = locationManager
.getLastKnownLocation(provider);
while (location == null) {
locationManager.requestLocationUpdates(provider, 1000, 0,
locationListener);
}

------解决思路----------------------
楼主确定手机 GPS 功能打开了么,没有 SIM 卡肯定取不到 network 类型的位置的。
------解决思路----------------------
getLastKnownLocation经常取不到东西的,使用百度定位SDK吧,比较靠谱
------解决思路----------------------
引用:
百度怎么定位的呢?不是调用安卓自己的定位api么?

基站定位、GPS定位、WIFI定位,实在不行还可以通过IP地址定位呢
------解决思路----------------------
getLastKnownLocation是指之前有成功定位过才会有值,而且值也不是那么准的。
------解决思路----------------------
这个,在屋里测试的时候很难拿到,建议到外面空旷的地方,才有可能拿到
  相关解决方案