Геокодер возвращает адрес в эмуляторе Android, но не в моем телефоне - PullRequest
0 голосов
/ 28 апреля 2018

У меня проблема в том, что если я пытаюсь получить адрес с помощью функции 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 ]

0 голосов
/ 11 мая 2018

Это могло быть вызвано ошибкой в ​​реализации производителя или преднамеренным отсутствием этой функции. Как указано здесь: https://developer.android.com/reference/android/location/Geocoder

Классу Geocoder требуется бэкэнд-сервис, который не включен в базовую платформу Android. Методы запроса Geocoder вернут пустой список, если на платформе нет бэкэнда. Используйте метод isPresent (), чтобы определить, существует ли реализация геокодера.

0 голосов
/ 28 апреля 2018

Дали ли вы разрешение на размещение в вашем приложении на вашем телефоне? если нет .. перейдите в yourapp >> разрешение >>> locationPermission ...

...