2010-01-18 7 views
6

Il codice seguente funziona perfettamente per i dispositivi reali in esecuzione su 1.5, 1.6 e 2.0 e l'emulatore in esecuzione su 2.1.Android: Nexus One - Geocoder causa IOException - funziona perfettamente con altri dispositivi ed emulatore

Tuttavia, eseguendolo sul Nexus One (in esecuzione 2.1) solleva un'IOException:

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

Questo è il frammento di codice dove capita:

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

Ho quasi lo stesso codice in un'app che ho scritto e funziona perfettamente sul mio Nexus One. Sei in grado di ridurlo a qualcosa di specifico, come forse il Nexus One non ha una connessione internet quando chiami geocoder? –

+0

Hai nel tuo manifest? – haseman

+0

In qualche modo funziona ora. Senza modifiche sul mio codice né sul Nexus One. Spaventoso. haseman: sto utilizzando ACCESS_COARSE_LOCATION e ACCESS_FINE_LOCATION, ma non sono riuscito a trovare il file raccomandato da android.permission.LOCATION nella documentazione: http://developer.android.com/intl/fr/reference/android/Manifest. permission.html – znq

risposta

1

Ciao sono caduto nello stesso problema e stessa situazione. Ho preso un Nexus One e ho trovato una soluzione per fare il lavoro addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1);. Devi solo riavviare il dispositivo. Quello che ho notato è che il metodo getFromLocation di Geocoder non è a conoscenza di alcuna modifica delle impostazioni della lingua (nel mio caso, ciò che ha reso il metodo smesso di funzionare era la modifica delle mie impostazioni internazionali predefinite). Dopo un riavvio, tutto ha funzionato. Qualcuno ha una ragione ragionevole per questo? (Scusa per il gioco di parole :-P)

0

Uso un HTC Tmobile G2 e ho avuto lo stesso problema durante il test di una funzione basata su GeoCoder. Un riavvio ha aiutato, ma questa non è una soluzione accettabile quando i miei clienti iniziano a lamentarsi di questo. Se si tratta di una sorta di problema di cancellazione della cache, spero che una soluzione alternativa possa essere implementata a livello di codice.