0

这是代码

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);**

给出错误的部分用星号突出显示。

谢谢你。

4

2 回答 2

5

getFromLocation()IOException如果网络不可用或发生任何其他 I/O 问题,则抛出一个。

http://developer.android.com/reference/android/location/Geocoder.html#getFromLocation(double, double, int)

要解决,请用try/catch块包围它:

try {
    List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
}
catch (IOException e) {
    e.printStackTrace();
}
于 2013-07-09T19:42:42.797 回答
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(); }
}
于 2013-07-09T21:05:37.393 回答