这是代码
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Geocoder gcd = new Geocoder(context, Locale.getDefault());
List<Address> addresses = **gcd.getFromLocation(latitude, longitude, 1);**
给出错误的部分用星号突出显示。
谢谢。
答案 0 :(得分:5)
getFromLocation()
会抛出IOException
。
要解决此问题,请使用try/catch
块围绕它:
try {
List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
}
catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:2)
除了Ken WOlfs的回答,您还必须检查设备上是否有GeoCoder服务。
“Geocoder类需要一个未包含在核心android框架中的后端服务。如果平台中没有后端服务,Geocoder查询方法将返回一个空列表。使用isPresent()方法确定是否有Geocoder实施存在。“ - 谷歌
所以你的代码应该是这样的:
if(Geocoder.isPresent()){
Geocoder gcd = new Geocoder(context, Locale.getDefault());
try {
List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
} catch (IOException e) { e.printStackTrace(); }
}