2010-01-18 4 views
6

Der folgende Code funktioniert perfekt für reale Geräte unter 1.5, 1.6 und 2.0 sowie den Emulator auf 2.1 läuft.Android: Nexus One - Geocoder verursacht IOException - funktioniert perfekt mit anderen Geräten und Emulator

es jedoch auf dem Nexus Ausführung One (Lauf 2.1) wirft eine IOException:

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

, dass der Code-Schnipsel ist, wo es passiert:

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

Ich habe fast genau den gleichen Code in einer App, die ich geschrieben habe, und es läuft gut auf meinem Nexus One. Können Sie es auf etwas Bestimmtes beschränken? Vielleicht hat das Nexus One keine Internetverbindung, wenn Sie den Geocoder anrufen? –

+0

Haben Sie in Ihrem Manifest? – haseman

+0

Es funktioniert irgendwie jetzt. Ohne Änderungen an meinem Code oder am Nexus One. Gespenstisch. haseman: Ich benutze ACCESS_COARSE_LOCATION und ACCESS_FINE_LOCATION, aber ich konnte nicht die von Ihnen empfohlene android.permission.LOCATION in der Dokumentation finden: http://developer.android.com/intl/fr/reference/android/Manifest. permission.html – znq

Antwort

1

Hallo ich in das gleiche Problem fiel und die gleiche Situation. Ich habe ein Nexus One und ich habe einen Workaround, um addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1); arbeiten zu lassen. Sie müssen nur Ihr Gerät neu starten. Was ich gemerkt habe, ist, dass Geocoders getFromLocation-Methode keine Änderung der Gebietsschema-Einstellungen bekannt ist (in meinem Fall, was die Methode aufhört zu arbeiten war die Änderung meiner Standard-Gebietsschema). Nach einem Neustart hat alles funktioniert. Jeder hat einen vernünftigen Grund dafür? (Sorry für das Wort Spiel :-P)

0

Ich benutze ein HTC Tmobile G2, und ich hatte das gleiche Problem beim Testen einer GeoCoder-basierten Funktion. Ein Neustart hat geholfen, aber das ist keine akzeptable Lösung, wenn sich meine Kunden darüber beschweren. Wenn dies eine Art Cache-Clearing-Problem ist, hoffe ich, dass eine Problemumgehung programmgesteuert eingeführt werden kann.