android - 地理编码器不会在奥利奥上运行
问题描述
我有一个必须从 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:{}
我试图搜索它,但没有找到解决方案。我怎样才能解决这个问题?
解决方案
正如Gencoder 文档所说:使用 isPresent() 方法来确定是否存在 Geocoder 实现。
所以先调用isPresent()方法,手动检查设备网络状态。
如果仍然失败,也许您需要创建自定义地理编码器实现,此链接很有帮助。
推荐阅读
- linux - 验证多个目录存在于其相应的分支上
- .net-core - 使用 Swashbuckle 从多个 .NET Core 项目中获取一份 OpenAPI 文档
- r - 从预测函数导出信息的问题 - 特别是在 R 中的日期
- c++ - c ++ OpenCV Rect大小增加
- java - 无法在类 org.apache.camel.builder.DeadLetterChannelBuilder 上找到属性描述符 useOriginalBody
- java - 如何在 Java 中捕获异常?
- html - 资源组中的 API 蓝图页面链接?
- spring-data - 春季投影精选系列
- hadoop - 打包或自动执行 Hive 查询
- java - 项目 gradle 插件的加载类路径应用于