2010-01-18 4 views
6

Le code ci-dessous fonctionne parfaitement pour les périphériques réels fonctionnant sur 1.5, 1.6 et 2.0 ainsi que l'émulateur fonctionnant sur 2.1.Android: Nexus One - Geocoder causes IOException - fonctionne parfaitement avec d'autres dispositifs et émulateur

Cependant, l'exécuter sur le Nexus One (en cours d'exécution 2.1) soulève une IOException:

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

C'est l'extrait de code où il se produit:

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

J'ai presque exactement le même code dans une application que j'ai écrite, et ça marche bien sur mon Nexus One. Êtes-vous capable de réduire à quelque chose de spécifique, comme peut-être le Nexus One n'a pas de connexion Internet lorsque vous appelez le géocodeur? –

+0

Avez-vous dans votre manifeste? – haseman

+0

Cela fonctionne d'une manière ou d'une autre maintenant. Sans aucun changement sur mon code ni sur le Nexus One. Effrayant. Auteur: J'utilise ACCESS_COARSE_LOCATION et ACCESS_FINE_LOCATION, mais je n'ai pas trouvé le fichier android.permission.LOCATION recommandé par vous dans la documentation: http://developer.android.com/intl/fr/reference/android/Manifest. permission.html – znq

Répondre

1

Salut je suis tombé dans le même problème et même situation. J'ai eu un Nexus One et j'ai eu une solution de contournement pour faire addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1); travail. Il vous suffit de redémarrer votre appareil. Ce que j'ai remarqué est que la méthode getFromLocation de Geocoder n'est pas consciente de toute modification dans les paramètres Locale (dans mon cas, ce qui a fait arrêter la méthode, c'est le changement de mes paramètres régionaux par défaut). Après un redémarrage, tout a fonctionné. Quelqu'un at-il une raison raisonnable pour cela? (Désolé pour le jeu de mot :-P)

0

J'utilise un HTC Tmobile G2, et j'ai eu le même problème lors du test d'une fonctionnalité basée sur GeoCoder. Un redémarrage a aidé, mais ce n'est pas une solution acceptable lorsque mes clients commencent à se plaindre à ce sujet. S'il s'agit d'un problème d'effacement de cache, j'espère qu'une solution de contournement peut être mise en place par programmation.

Questions connexes