Геокодер возвращает адрес в эмуляторе Android, но не в моем телефоне
У меня проблема в том, что если я пытаюсь получить адрес с помощью функции geocoder.getFromLocationName("California",1), он находит адрес, но если я проверяю его на моем устройстве (Xiaomi Mi5, Oreo), он возвращает пустой список.
Заранее спасибо!
private void geoLocate(){
Log.d(TAG, "geoLocate: geolocating");
String searchString = mSearchText.getText().toString();
Log.d(TAG, "geoLocate: Searching for " + searchString);
Geocoder geocoder = new Geocoder(this);
List<Address> list = new ArrayList<>();
try{
if(geocoder.isPresent()){
list = geocoder.getFromLocationName(searchString,1);
} else{
Log.d(TAG, "geoLocate: GEOCODER IS NOT PRESENT");
}
}catch (IOException e){
Log.e(TAG, "geoLocate: IOException " + e.getMessage() );
}
if(list.size() > 0 ){
Address address = list.get(0);
Log.d(TAG, "geoLocate: found a location: " + address.toString());
}else{
Log.d(TAG, "geoLocate: Location not found");
}
}
2 ответа
Дали ли вы разрешение на размещение в вашем приложении на вашем телефоне? если нет.. перейдите в yourapp >> разрешение >>> locationPermission...
Это могло быть вызвано ошибкой в реализации производителя или преднамеренным отсутствием этой функции. Как указано здесь: https://developer.android.com/reference/android/location/Geocoder
Класс Geocoder требует бэкэнд-сервис, который не включен в базовую платформу Android. Методы запроса Geocoder вернут пустой список, если на платформе нет бэкэнда. Используйте метод isPresent(), чтобы определить, существует ли реализация геокодера.