Я новичок в разработку Android, следуя мой код о использовании Geocoder, чтобы получить название города из текущего местоположения, он возвращает нуль:Android Geocoder возвращает пустой город имя
частной пустота updateCurrentLocation (Место нахождение) { двойных лат = 0,0, lng = 0,0;
if (location != null) {
lat = location.getLatitude();
lng = location.getLongitude();
Log.i("tag", "Latitute is" + lat + ", Longtitute is" + lng);
} else {
City_Name = "Unavailable";
}
List<Address> list = null;
Geocoder geocoder = new Geocoder(this.getActivity());
try {
list = geocoder.getFromLocation(lat, lng, 1);
} catch (IOException e) {
e.printStackTrace();
}
//may provide multiple locations.
if (list != null && list.size() > 0) {
Address address = list.get(0);
City_Name = address.getLocality();
}
Log.i("Try", "CityName:" + City_Name);
//send empty message
handler.sendEmptyMessage(1);
}
Я открыл GPS-услуги, добавил ACCESS_FINE_LOCATION и разрешение INTERNET в манифесте уже. Кроме того, я искал аналогичные вопросы в Stackoverflow о Geocoder, который возвращает null, но не нашел полезных решений. Один из них анализирует JSON с сайта Geocoder, но он тоже не работает.
Может ли кто-нибудь помочь в этом? Спасибо! BTW, есть ли лучшее решение для получения названия города? Спасибо!
Был ли ваш код выброшен IOException? – josemgu91
Если вы тестируете API 23 или выше, вам необходимо запросить разрешение, иначе оно будет отключено по умолчанию. Быстрое обходное решение заключается в том, чтобы разрешить разрешение из «Настройки»> «Приложения»> «имя приложения»> «Разрешения» – MoGa
@ josemgu91 Нет, это работает хорошо, но просто никакого возвращаемого значения. – LunarS