要明确:这是我的Android应用程序中的一项活动,旨在使用GPS_PROVIDER提取用户位置的坐标。活动包含一个按钮,按下该按钮时,应启动获取坐标数据的方法。问题是当没有先前已知的位置信息时(即,最近是否重置了电话),应用程序崩溃。如果我打开地图应用程序(例如)并确定我的位置,然后重新打开我自己的应用程序并运行此方法,它按预期工作。我的问题是为什么这会崩溃和/或如何防止这种崩溃发生?感谢帮助,谢谢。
当按下按钮时运行此方法 - 当正确找到坐标时,会生成一个意图响应回调用活动:
protected void getCurrentLocation() {
Location location = null;
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (IllegalArgumentException iae) { }
if (location != null) {
longV = location.getLongitude();
latV = location.getLatitude();
response(longV, latV);
} else {
getCurrentLocation();
}
答案 0 :(得分:4)
我猜你正在收到StackOverflowException,因为如果location
是null
你调用完全相同的函数创建一个无限循环...
如果没有最后知道位置,则需要申请新位置。 (getLastKnownLocation()
无论你多少次调用它都不会自行改变。)