微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Java:地理编码器 grpc 失败异常

如何解决Android Java:地理编码器 grpc 失败异常

我将带您了解关键点,请耐心等待。

我在做什么

我从位置管理器获取位置并使用地理编码器获取城市名称

我是怎么做的 在位置更改功能中,我创建了一个新线程并创建了一个新地址列表,以便在 try catch 块中从地理编码器获取地址

代码

public void onLocationChanged(Location location) {
    Log.d("onLocationChanged","Before if");
    if (location != null){
        Log.d("if location not null","start");
        Geocoder geocoder = new Geocoder(getContext(),Locale.getDefault());
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Log.d("TAG","onLocationChanged: Location : " +location);
                    List<Address> addresses = geocoder.getFromLocation(location.getLatitude(),location.getLongitude(),1);
                    Log.d("TAG","onLocationChanged address: "+addresses);
                    city = addresses.get(0).getLocality();
                    search(city);
                    return;
                } catch (IOException e) {
                    progressDialog.dismiss();
                    Log.d("IOException","at geocoder " + e.getMessage());
                    //Toast.makeText(getContext(),"Slow Connection...Try Later.",Toast.LENGTH_LONG).show();
                    e.printstacktrace();
                }
            }
        });
        thread.start();

    }
    else {
        progressBar.setVisibility(View.INVISIBLE);
        Log.d("Location is null","else");
        Toast.makeText(fl.getContext(),"Cannot Access Current Location...",Toast.LENGTH_LONG).show();
        return;
    }

}

发生了什么

根据日志,正在获取位置,但调用 geocoder.getFromLocation 函数时发生 grpc Failed 异常。

日志

D/onLocationChanged: Before if
D/if location not null: start
D/TAG: onLocationChanged: Location : Location[gps 33.565110,73.016913 hAcc=5 et=+18822d15h39m59s954ms etAcc=+1ms alt=0.0 vel=0.0 bear=0.0 vAcc=1 sAcc=1 bAcc=30 {Bundle[mParcelledData.dataSize=96]}]
D/IOException: at geocoder grpc Failed
W/System.err: java.io.IOException: grpc Failed
        at android.location.Geocoder.getFromLocation(Geocoder.java:136)
        at com.rehnsehan.rehnsehan.ExploreActivity$5.run(ExploreActivity.java:194)
        at java.lang.Thread.run(Thread.java:923)
W/ManagedChannelImpl: [{0}] Failed to resolve name. status={1}
W/Firestore: (23.0.1) [WatchStream]: (51c23b2) Stream closed with status: Status{code=UNAVAILABLE,description=Unable to resolve host firestore.googleapis.com,cause=java.lang.RuntimeException: java.net.UnkNownHostException: Unable to resolve host "firestore.googleapis.com": No address associated with hostname
        at io.grpc.internal.DnsNameResolver.resolveAll(DnsNameResolver.java:436)
        at io.grpc.internal.DnsNameResolver$Resolve.resolveInternal(DnsNameResolver.java:272)
        at io.grpc.internal.DnsNameResolver$Resolve.run(DnsNameResolver.java:228)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:923)

注意:这个函数在上个月运行得很好,没有抛出任何异常。

谢谢,感谢任何建议或反馈。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。