Я думаю, что проблема в параметрах метода. Я предполагаю, что location - это GeoPoint В этом случае вместо
addresses = geocoder.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
попробуйте это:
addresses = geocoder.getFromLocation(location.getLatitude()/1E6,
location.getLongitude()/1E6, 1);
потому что координаты в геопункте представлены в микродеградах
Редактировать
Я скопировал твой код и попробовал его. Предполагая, что ваш объект "location" является GeoPoint, код, который работает следующим образом:
GeoPoint location = new GeoPoint(lat, lon);
if (location != null) {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(location.getLatitudeE6()/1E6,
location.getLongitudeE6()/1E6, 1);
if (addresses.size() > 0) {
Address resultAddress = addresses.get(0);
String locality = resultAddress.getLocality();
String sublocality = resultAddress.getSubLocality();
String postalcode = resultAddress.getPostalCode();
String country = resultAddress.getCountryName();
String adminarea = resultAddress.getSubAdminArea();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
однако, если вы тестируете его на эмуляторе, убедитесь, что у вас есть интернет-соединение. В противном случае метод getFromLocation не сможет найти адрес и ничего не отобразит. Если у вас нет ошибок в logcat, и проблема только в том, что ничего не отображается, это проблема: нет сети .