我的应用程序每次尝试获取用户位置时都会崩溃。 Unfortunetley我没有错误,因为当我插入电脑时它从未发生过......
我用它来获取我的用户位置:
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
我在想有时这可能是空的?如果是这样,我怎么能解决这个力呢?
答案 0 :(得分:2)
在获取位置时没有强行关闭..在分配经度和纬度时关闭它的力量......在设定值之前放置if(location!=null)
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//location might be null so
if(location != null)
{
double longitude = location.getLongitude();
double latitude = location.getLatitude();
}
答案 1 :(得分:0)
您无法保证位置不会为空(可能没有最后一个已知位置),因此您将在
中出现NullPointerExceptionlocation.getLongitude()
在继续之前检查位置!= null。
答案 2 :(得分:0)
始终使用Try&当有可能出现异常时捕获阻塞。如果位置返回null,则会得到NullPointerException。
try {
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
} catch (Exception e) {
}
答案 3 :(得分:0)
我建议不要滚动自己的GPS ..使用融合位置提供商:
这是一个例子: http://www.kpbird.com/2013/06/fused-location-provider-example.html?m=1