67 votes

java.io.IOException : grpc a échoué

Lorsque j'utilise l'appel getFromLocationName, j'obtiens une IOException avec la description "grpc failed".

Le code qui est exécuté

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    try {
        Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
        List<Address> listAdresses = geocoder.getFromLocationName("London", 10);
        Log.i("PlaceInfo", listAdresses.get(0).toString());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Erreur dans les sorties de la console :

07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: java.io.IOException: grpc failed
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at android.location.Geocoder.getFromLocationName(Geocoder.java:178)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at co.siqve.maplocationdemo.MapsActivity.onMapReady(MapsActivity.java:70)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at com.google.android.gms.maps.zzaj.zza(Unknown Source)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at com.google.android.gms.maps.internal.zzaq.onTransact(Unknown Source)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at android.os.Binder.transact(Binder.java:499)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at com.google.android.gms.maps.internal.aq.a(:com.google.android.gms.DynamiteModulesB:5)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at com.google.maps.api.android.lib6.impl.bb.run(:com.google.android.gms.DynamiteModulesB:5)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at android.os.Handler.handleCallback(Handler.java:751)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at android.os.Looper.loop(Looper.java:154)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6119)
07-10 12:01:38.782 13712-13712/co.siqve.maplocationdemo W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
07-10 12:01:38.782 13712-13712/co.siqve.maplocationdemo W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
07-10 12:01:38.782 13712-13712/co.siqve.maplocationdemo W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Version du SDK Android (niveau API) : 25

Les plugins Android Studio sont à jour.

Merci d'avance !

EDITAR:

Le problème semble être résolu maintenant, voici ma réponse. solution.

0 votes

Je suis confronté à la même erreur en ce moment.

0 votes

L'appel à getFromLocationName échoue-t-il immédiatement ou après un certain temps ? Est-ce qu'il échoue à chaque fois que vous l'appelez ou est-ce qu'il fonctionne parfois ?

0 votes

@AndrewR L'appel a échoué tout de suite, et à chaque fois.

21voto

Daniele Points 163

Comme l'écrit Google, vous ne devez pas appeler cette méthode sur le thread de l'interface utilisateur.

https://developer.Android.com/training/location/display-address#java

J'ai résolu ce problème en exécutant cette opération dans une nouvelle Thread et si j'ai besoin de mettre à jour une vue de l'interface utilisateur, je le ferai dans la section runOnUiThread

1 votes

Oui, ça a beaucoup de sens... Merci ! J'ai levé mon vote

3 votes

Je pense que le vrai problème doit se situer ailleurs, car je rencontre le même problème de grpc en utilisant Geocoder mais le fait de déplacer l'opération vers un nouveau fil de discussion n'a rien résolu, il a simplement fait en sorte que je reçoive la même erreur avec un délai de 10 secondes.

17voto

Arti patel Points 484

Il se peut que vous rencontriez ce problème uniquement avec Genymotion et l'émulateur Android Studio. J'ai rencontré le même problème avec genymotion et l'émulateur Android studio, puis je l'ai vérifié dans l'appareil Android réel. Cela fonctionne bien pour moi. L'avez-vous vérifié dans un appareil réel ?

0 votes

Je n'utilisais pas vraiment Genymotion, mais plutôt l'émulateur intégré d'Android Studio, désolé, j'aurais dû préciser cela dans le post.

1 votes

J'ai également eu une erreur dans l'émulateur Android mais cela fonctionne bien dans l'appareil réel.

14voto

Aamir Rafiq Points 79

Je suis confronté à ce problème sur un appareil Android 4.4.2 à plusieurs reprises. Pour moi, la solution consiste simplement à redémarrer l'appareil. Pas de mise à jour du code, pas de désinstallation d'Android studio.

1 votes

J'utilisais un booster de mémoire pour libérer la RAM. Je pense que ça a tué le service. Après avoir redémarré l'appareil, ça a marché.

1 votes

J'ai eu la même chose sur mon appareil réel (Samsung galaxy tab 3 8.0) avec Android 4.4.2. La solution était juste de redémarrer la tablette.

1 votes

La solution de redémarrer l'émulateur a fonctionné pour moi merci aamir rafiq

3voto

Tobus Points 78

Aujourd'hui (2017-09-16), mon Android Studio (2.3.3) a reçu une mise à jour pour les éléments suivants Services Google Play a révision 44 . Le problème a été corrigé par la suite. Aucun changement de code ou de configuration de mon côté.

1 votes

Comme toute autre mise à jour pour Android Studio : Vous serez averti si des mises à jour sont disponibles ou vous pouvez sélectionner manuellement "Check for Updates..." dans le menu Android Studio.

1voto

SagunKho Points 442

J'ai finalement réussi à le faire fonctionner en utilisant la configuration suivante pour la version 25 du SDK, les outils de construction et l'émulateur d'API.

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.example..."
        minSdkVersion 15
        targetSdkVersion 25

J'utilise également la version 11.0.2 de l'API Google.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X