Android 仅当我获取用户位置时,应用程序强制才会关闭
每隔一段时间,我的应用程序就会在试图获取用户位置时崩溃。不幸的是,我没有这个错误,因为当我插入电脑时,它从未发生过 我正在使用它获取我的用户位置:Android 仅当我获取用户位置时,应用程序强制才会关闭,android,gps,android-location,Android,Gps,Android Location,每隔一段时间,我的应用程序就会在试图获取用户位置时崩溃。不幸的是,我没有这个错误,因为当我插入电脑时,它从未发生过 我正在使用它获取我的用户位置: LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); do
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
我想有时候这可能是空的?如果是这样,我如何修复此强制关闭?您不能保证位置不会为null(可能没有最后一个已知位置),因此在中会出现NullPointerException
location.getLongitude()
检查那个位置!=在继续之前无效 获取位置时不会强制关闭。。在指定经度和纬度时,其力被关闭。。在指定值之前,如果(位置!=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();
}
当可能出现异常时,请始终使用Try&catch块。如果位置返回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) {
}
我建议不要使用自己的GPS。。使用融合位置提供程序:
以下是一个例子:
如果为空,我如何获取它?如果location
为空,则表示由于连接问题或隐私设置,他们的设备无法建立位置。你的应用程序能在不知道具体位置的情况下工作吗?你能计算出他们最后的已知位置吗?然后你必须循环它直到它不为空。如果gps位置为空,你可以使用网络位置代替gps。90%这不会是空的。。这可能不太准确,但这也是另一种选择OK,所以我可以说不能获取gps信号或其他什么。执行尝试/捕获块不是盲目不执行空检查的“正确”方法,比空检查昂贵得多。但我同意你的看法,如果位置对象为空,我应该检查它。