Java.io.IOException: GRPC 失败。

66

当我使用getFromLocationName方法时,会抛出一个IOException并显示"grpc failed"的描述信息。

运行的代码:

@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();
    }
}

控制台输出的错误:

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)

Android SDK 版本(API 级别):25

Android Studio 插件已更新至最新版本。


我现在也遇到了同样的错误。 - Ronak Joshi
调用getFromLocationName会立即失败还是在一段时间后失败?每次调用它都会失败还是有时候可以工作? - AndrewR
@AndrewR 直接失败了,每一次都是这样。 - Siqve
@RonakJoshi 对我来说似乎又可以工作了,这是我的解决方案。 - Siqve
我向谷歌提交了一个错误报告,因为我经常看到相同的跟踪信息,而实际的错误描述并没有给出任何关于发生了什么的提示:https://issuetracker.google.com/issues/63973182 - saberrider
请检查您的互联网连接。我不小心关闭了互联网,然后运行我的应用程序,出现了这个错误。 - Anil Chahal
28个回答

0
当搜索词为空时,我遇到了相同的错误。一旦我确保它不为空,错误就消失了。 在这里,搜索词是指getFromLocationName方法的第一个参数。

0
在我的情况下,我只是在应用程序权限设置中打开了(已授予权限的)位置。

0

嗨,我在回到旧项目/测试手机后遇到了“grpc失败”错误。

我的代码调用了getFromLocation()方法,但总是失败。经过阅读和尝试了几个小时后,我想检查一下谷歌地图是否能正常工作,它在一个空白的地图上显示了我的位置,wifi被关闭,所以我打开了WIFI,地图正常工作。

重新测试应用程序,终于getFromLocation()方法可以工作了,因此可能是位置服务区域中有一些问题...


0
在我的情况下,我删除了 AVD 并重新安装它,一切都正常了。

0
我似乎通过打开手机的顶部工具栏并在WiFi和网络之间切换来解决了这个问题。我猜所有虚拟设备上的操作内存都设置为2GB RAM,而查找位置只是使用了太多,因此我看到帧率跳动和无法搜索位置。所以,如果出现此错误,请从WiFi切换到网络,然后再切换回来。

0

如果将Geocoder引入应用程序作为单例而不是每次创建,它对我来说是有效的。确保从工作线程调用Geocoder.getFromLocationName()。

例如:

class Application {
    private val geoCoder = Geocoder(context, Locale.getDefault())
    ...
}

class SomeClass {

    @WorkerThread
    fun doSmth(){
       application.geoCoder.getFromLocationName("London", 10)
       ...
    }
}

0
List<Address> addresses  = geocoder.getFromLocation(lat,lon, 1);

地址的大小通常为0。这可能是由于无法获取地址而将其标记为“未知”或“默认”。

与之相关的结果

-9

更新:

问题似乎已经解决了。我不确定这个问题是否曾经出现在我的端上,所以如果您在此帖子之前遇到过这个问题,请重新运行您的应用程序并查看它是否现在可以正常工作。

如果仍然无法正常工作,以下是我自己做的“可能”使其正常工作的事情:

  1. 卸载并删除与Android Studio相关的所有文件。(不是项目文件)。
  2. 然后重新安装Android Studio,并重新打开项目。
  3. 在运行应用程序时(我使用Android Studio内置的模拟器),我使用了不同的虚拟设备和设备API。这次我在Pixel上运行,使用API 23,x86_64。

14
你最后弄清楚问题出在哪儿了吗?我也遇到了同样的问题。你提供的解决方案起初有效,但只持续了一天左右,之后又回到了“grpc 失败”的状态,即使我从头开始新建一个项目也是如此。不能一直重新安装 Android Studio。 :( - Mackan
1
我遇到了同样的问题。不确定为什么或如何解决这个问题。 - Pxaml
1
我陷入了同样的问题!!但是没有正确的答案来解决。 - Zala Janaksinh
有人解决了这个问题吗? - Rat-a-tat-a-tat Ratatouille
似乎是一个与缓存有关的问题,我的意思是涉及某些原因保存在某个地方的值是脏的(不知道为什么)。 - Marco Ottina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接