2010-01-18 32 views
6

以下代碼適用於在1.5,1.6, 和2.0上運行的實際設備以及在2.1上運行的仿真器。Android:Nexus One - 地理編碼器導致IOException - 與其他設備和仿真器完美配合

然而,在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; 
} 
+1

我已經寫了一個應用程序中幾乎完全相同的代碼,並且它在我的Nexus One上運行良好。您是否能夠將其縮小到任何特定的內容,例如,當您致電地理編碼器時,Nexus One可能沒有互聯網連接? – 2010-01-18 16:44:32

+0

你的清單中是否有? – haseman 2010-01-18 17:42:51

+0

它以某種方式現在工作。在我的代碼和Nexus One上沒有任何更改。幽靈般的。 haseman:我正在使用ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION,但我無法在文檔中找到你推薦的android.permission.LOCATION:http://developer.android.com/intl/fr/reference/android/Manifest。 permission.html – znq 2010-01-21 10:34:37

回答

1

您好我掉進了同樣的問題和相同的情況。我有一個Nexus One,我找到了一個解決方法來使addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1);工作。 你只需要重新啓動你的設備。我注意到Geocoder的getFromLocation方法沒有意識到Locale設置中的任何改變(在我的情況下,該方法停止工作的原因是我默認的Locale的改變)。 重新啓動後,一切正常。任何人都有合理的理由呢? (對不起,字遊戲:-P)

0

我使用的是HTC Tmobile G2,在測試基於GeoCoder的功能時遇到同樣的問題。重啓有助於解決問題,但當客戶開始抱怨時,這不是一個可以接受的解決方案。如果這是某種緩存清除問題,那麼我希望可以通過編程方式來實現解決方法。

相關問題