android getlastknown位置在三星galaxy s3崩溃

时间:2012-11-15 22:07:09

标签: android google-maps

当我尝试将我的位置放在三星Galaxy s3上时,我的应用程序崩溃了。它在我测试的其他3款手机上运行完美。我只是在三星Galaxy s3上有远程测试人员,所以我无法得到错误信息。这是我的代码:

    Location finalLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    locationManager.removeUpdates(locationListenerGps);
    locationManager.removeUpdates(locationListenerNetwork);

    Location net_loc=null, gps_loc=null;
    if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
        gps_loc=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
        net_loc=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

    //if there are both values use the latest one
    if(gps_loc!=null && net_loc!=null){
        if(gps_loc.getTime()>net_loc.getTime())
            finalLocation = gps_loc;
        else
            finalLocation = net_loc;
    }

    if(gps_loc!=null){
        finalLocation = gps_loc;

    }
    if(net_loc!=null){
        finalLocation = net_loc;

    }

2 个答案:

答案 0 :(得分:1)

我认为这是4.0.4版本的“功能”,请检查(getLastKnownLocation does not work on Samsung Galaxy S3 4.0.4)

我遇到了同样的问题,当我升级到4.1时它就消失了。

你可能必须抓住两者都为空的情况,我发现PASSIVE_PROVIDER有效。

   if ( gps_loc == null && net_loc == null ) { // only S3 gets this....
      finalLocation=  locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
   }
   if ( finalLocation == null ) panic....

答案 1 :(得分:0)

如果没有logcat,很难说出确切的问题,但getLastKnownLocation在某些情况下可能会返回null(不太可能,但可能)。如果是这种情况,很容易看出会导致崩溃。也许尝试添加一些代码来检查getLastKnownLocation是否返回了值,如果没有,则使用虚拟值或“暂停”您的操作并自行获取位置。

http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String