当我尝试将我的位置放在三星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;
}
答案 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是否返回了值,如果没有,则使用虚拟值或“暂停”您的操作并自行获取位置。