使用GPS的位置管理器检索最近一次的位置时Android应用程序崩溃

时间:2012-10-29 19:54:57

标签: android

要明确:这是我的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();
    }

1 个答案:

答案 0 :(得分:4)

我猜你正在收到StackOverflowException,因为如果locationnull你调用完全相同的函数创建一个无限循环...

如果没有最后知道位置,则需要申请新位置。 (getLastKnownLocation()无论你多少次调用它都不会自行改变。)