首页 > 解决方案 > 地理编码器不会在奥利奥上运行

问题描述

我有一个必须从 Google Maps API 上的标记收集地址的应用程序。我测试了这段代码,它在运行 Android 6.0 的设备上运行良好:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        try {
            List<Address> addressList1 = geocoder.getFromLocation(currentLatitude,currentLongitude,1);
            Address addressCurrent = addressList1.get(0);
            full_address = addressCurrent.getAddressLine(0); //Detail address
            country = addressCurrent.getCountryName();
            //locality =  addressCurrent.getLocality(); //sub-district
            admin_area = addressCurrent.getAdminArea(); //City
            sub_admin_area = addressCurrent.getSubAdminArea(); //District
            road_name = addressCurrent.getThoroughfare(); // road
            Toast.makeText(this, full_address, Toast.LENGTH_SHORT).show();
        }catch (IOException e){
            Toast.makeText(this, "No Data", Toast.LENGTH_SHORT).show();
            Log.e("error geocoder", e.toString());
        }

但是当我尝试在 Android 8.1 设备上运行时,它会返回错误日志:

E/错误地理编码器:java.io.IOException:NetCode:-1000,NetRes:{}

我试图搜索它,但没有找到解决方案。我怎样才能解决这个问题?

标签: androidgoogle-mapsandroid-6.0-marshmallowandroid-8.1-oreogeocoder

解决方案


正如Gencoder 文档所说:使用 isPresent() 方法来确定是否存在 Geocoder 实现。

所以先调用isPresent()方法,手动检查设备网络状态。

如果仍然失败,也许您需要创建自定义地理编码器实现,此链接很有帮助。


推荐阅读