Le mois dernier, le géocodeur a donc commencé à échouer à chaque fois avec l'erreur "grpc failed" et je n'arrive pas à le résoudre. J'ai regardé Java.io.IOException: échec de grpc mais cela n'a pas vraiment résolu le problème.
Par exemple, le code
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1); // Here if fails with "grpc failed"
J'ai le même code depuis des années, mais ces derniers temps, il a cessé de fonctionner lorsque je recompile l'application et teste sur un émulateur ou un appareil réel.
Si je compile avec le SDK 25, en utilisant l'outil de construction 25, cela fonctionne sur un émulateur avec SDK 25. Mais si j'essaie un émulateur avec SDK 24, 26 ou toute autre version du SDK, il échouera avec "grpc failed". J'ai essayé de créer un nouveau périphérique virtuel, etc., mais le même problème.
Je n'ai aucune idée de comment y remédier et quel est le problème.
Configuration actuelle: targetSDK/compileSDK 25, outil de build 25.0.3, Android Studio 2.3.3, émulateur régulier. (J'ai essayé d'autres outils de build et versions du SDK, mais le problème persiste)
Des idées?
Le problème peut être que vous essayez d'utiliser Geocoder dans le thread principal, si vous utilisez un IntentService, vous avez cette option URL pour créer dans un autre processus bien que vous pouvez toujours utiliser un Asynctask ou similaire.
Eh bien, cela pourrait être trop tard et pour quelqu'un d'autre qui cherche des réponses, dans mon cas, c'était un problème Internet. Ma connexion Internet était mauvaise
Il est lié au service Google Play sur les appareils virtuels. Utilisez l'API25 et la version 7.1.1 pour la solution.
Voici des exemples;
Lorsque j'essaie sur Genymotion et que les services Google Play sont désactivés sur l'appareil virtuel (erreur: service non disponible):
10-07 07:13:30.023 3481-3481/com.unalfaruk.mapexample I/System.out: Your Location: 65.96992333333333 -18.540028333333332
10-07 07:13:30.023 3481-3481/com.unalfaruk.mapexample W/System.err: Java.io.IOException: Service not Available
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err: at Android.location.Geocoder.getFromLocation(Geocoder.Java:136)
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err: at com.unalfaruk.mapexample.MapsActivity$1.onLocationChanged(MapsActivity.Java:71)
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err: at Android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.Java:297)
Lorsque j'essaye sur Genymotion et que les services Google Play sont activés (Erreur: échec de grpc):
10-07 07:18:56.325 2694-2694/com.unalfaruk.mapexample I/System.out: Your Location: 65.96669666666666 -15.0
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err: Java.io.IOException: grpc failed
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err: at Android.location.Geocoder.getFromLocation(Geocoder.Java:136)
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err: at com.unalfaruk.mapexample.MapsActivity$1.onLocationChanged(MapsActivity.Java:71)
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err: at Android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.Java:297)
Lorsque j'essaye sur AVD Manager et que Google Play Services est activé (pas d'erreur):
10-07 14:20:14.769 3159-3159/com.unalfaruk.mapexample I/System.out: Your Location: 37.421998333333335 -122.08400000000002
10-07 14:20:15.220 3159-3159/com.unalfaruk.mapexample I/System.out: Your Adress: Address[addressLines=[0:"1600 Amphitheatre Parkway",1:"Mountain View, CA 94043",2:"USA"],feature=1600,admin=California,sub-admin=null,locality=Mountain View,thoroughfare=Amphitheatre Parkway,postalCode=94043,countryCode=US,countryName=United States,hasLatitude=true,latitude=37.422329,hasLongitude=true,longitude=-122.0843055,phone=null,url=null,extras=null]