当我获得用户位置时,App force有时会关闭

时间:2013-11-08 14:50:13

标签: android gps android-location

我的应用程序每次尝试获取用户位置时都会崩溃。 Unfortunetley我没有错误,因为当我插入电脑时它从未发生过......

我用它来获取我的用户位置:

 LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();

我在想有时这可能是空的?如果是这样,我怎么能解决这个力呢?

4 个答案:

答案 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)

您无法保证位置不会为空(可能没有最后一个已知位置),因此您将在

中出现NullPointerException
location.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