try
{
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
// Initialize the location fields
if (location != null)
{
onLocationChanged(location);
}
}
catch(Exception e)
{}
嗨,大家好,
我使用getLastKnownLocation()从上面的代码中获取Gp值。
问题是getLastKnownLocation()在很长的空闲时间之后很少(或)有时(或)返回null。没有提供商或网络问题。所有必需的权限都在清单中声明。
无法找到克服此问题的解决方案(即)用正确的值替换空值。
重新启动移动设备时,getLastKnownLocation()返回正确的值。但每次都无法接受这种解决方案。
不知道为什么移动设备正在丢失其位置以及何时恢复其位置。
我正在开发一个完全取决于当前位置的应用程序。
如何克服此问题或任何其他替代方法可以避免此问题?
答案 0 :(得分:0)
文档说,当提供程序处于脱机状态时,可以返回null
。也许您的代码选择禁用提供商?如果您需要更精确的位置,请使用GPS启动您自己的位置监听器(如果可用 - 如果没有,您可以将用户移动到设置屏幕以打开GPS)。您还可以验证lastKnownLocation
是否不太旧(当然,如果它不为空)将其用作起点。