Geocoder grpc失败

所以geocoder上个月已经开始失败,每次“grpc失败”的错误,我似乎无法解决这个问题。 我看了java.io.IOException:grpc失败,但它并没有真正解决问题。

代码

Geocoder geocoder = new Geocoder(context, Locale.getDefault()); addresses = geocoder.getFromLocation(lat, lng, 1); // Here if fails with "grpc failed" 

我已经有相同的代码多年了,但最近它已经停止工作,当我重新编译的应用程序,并在模拟器或真实设备上testing。

如果我使用SDK 25进行编译,使用构build工具25,它可以在带有SDK 25的模拟器上工作。但是,如果我尝试使用SDK 24,26或任何其他SDK版本的模拟器,它将会以“grpc failed”失败。 我试图创build一个新的虚拟设备等,但同样的问题。

我不知道如何解决这个问题,是什么问题。

当前设置:targetSDK / compileSDK 25,构build工具25.0.3,Android Studio 2.3.3,常规模拟器。 (我试过其他的构build工具和SDK版本,但是问题仍然存在)

有任何想法吗?

Solutions Collecting From Web of "Geocoder grpc失败"

问题可能是您正在尝试在主线程中使用Geocoder,如果您正在使用IntentService,则可以在另一个进程中创build此URL选项,尽pipe您始终可以使用Asynctask或类似的方法。

它与虚拟设备上的Google Play服务有关。 使用API​​25和7.1.1版本解决scheme。

这里是一些例子。

当我尝试使用Genymotion并在虚拟设备上禁用Google Play服务时 (错误:服务不可用):

 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) 

在这里输入图像说明

当我尝试使用Genymotion并启用Google Play服务时 (错误: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) 

在这里输入图像说明

当我尝试使用AVD Manager并启用Google Play服务时 (无错误):

 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] 

在这里输入图像说明

我在几分钟之前得到了相同的错误,您是否尝试重新启动您的(真正的)智能手机?

看来这是使用模拟器的一个已知问题,使用真实的设备为我工作。