Android:Nexus One - Geocoder导致IOException - 与其他设备和模拟器完美配合

时间:2010-01-18 16:23:25

标签: android geocoding ioexception nexus-one

以下代码适用于在1.5,1.6上运行的实际设备 和2.0以及2.1上运行的模拟器。

然而,执行它 在Nexus One上运行(运行2.1)会引发IOException:

java.io.IOException: Unable to parse response from server
at android.location.Geocoder.getFromLocation(Geocoder.java:124)

这是它发生的代码片段:

Double myLatitude = AppObject.myLocation.getLatitude();
Double myLongitude = AppObject.myLocation.getLongitude();
DEBUG.i(TAG, "My location: " + myLatitude + " | " + myLongitude);
Geocoder geocoder = new Geocoder(MainActivity.this);
java.util.List<Address> addressList;
try {
    addressList = geocoder.getFromLocation(myLatitude, myLongitude, 5);
    if(addressList!=null && addressList.size()>0) {
        currentAddress = new String();
        DEBUG.i(TAG,addressList.get(0).toString());
        currentAddress = addressList.get(0).getAddressLine(0) + ", "
        + addressList.get(0).getAddressLine(1) + ", "
        + addressList.get(0).getAddressLine(2); 

    }
    return true;

} catch (IOException e) {
    e.printStackTrace();
    return false;
}

2 个答案:

答案 0 :(得分:1)

嗨,我遇到了同样的问题和同样的情况。我得到了一个N​​exus One,我得到了一个使addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1);工作的解决方法。 您只需重新启动设备即可。我注意到Geocoder的getFromLocation方法不知道Locale设置有任何变化(在我的例子中,使得该方法停止工作的原因是我的默认Locale的更改)。 重启后一切正常。有人有合理的理由吗? (对不起游戏这个词:-P)

答案 1 :(得分:0)

我正在使用HTC Tmobile G2,在测试基于GeoCoder的功能时遇到了同样的问题。重启有帮助,但当我的客户开始抱怨这个时,这不是一个可接受的解决方案。如果这是某种缓存清除问题,那么我希望可以通过编程方式实施解决方法。