Geocoder возвращает ложь на isPresent ()

голоса
0

Поэтому я написал код для карт в моем приложении, и он работает на моем телефоне просто отлично, к сожалению, она не работает на моем эмуляторе, который не является достаточно комфортно для меня вот код:

String  searchString = mSearchText.getText().toString();

Geocoder geocoder = new Geocoder(this);
List<Address> list = new ArrayList<>();
try{
    int i=0;
    while(list.size()==0 && i<10) {
        boolean a = geocoder.isPresent();
        list = geocoder.getFromLocationName(searchString,1);
        i++;
    }
}catch(IOException e){
    Log.d(TAG, geoLocate: IOException  + e.getMessage());
}

Поэтому, когда я его отладки я вижу, что переменная «а» всегда ложна на моем эмуляторе.

Я использую андроид эмулятор для визуальной студии, так как у меня есть процессор AMD (Ryzen 7 1800x), на котором я установил магазина Google Play и Google Play услуги (карта работает нормально, просто геокодер нет), теперь есть какой-нибудь способ это исправить ?

Как я прочитал на https://developer.android.com/reference/android/location/Geocoder.html сайта «Методы запроса геокодера возвращает пустой список , если там нет серверной службы в платформе.» Могу ли я получить услугу как - то? Загрузите его на моем эмуляторе или что - то вроде этого?

Задан 24/04/2018 в 08:14
источник пользователем
На других языках...                            


1 ответов

голоса
0

Во-первых, isPresent () является статическим методом, так что вызов должен быть

Geocoder.isPresent();

IsPresent метод «Возвращает истину, если методы Geocoder getFromLocation и getFromLocationName реализуются» и ложь в противном случае. Некоторые эмуляторы не установлен сервис геокодирования. Является ли метод

geocoder.getFromLocationName 

возвращая то, что вам нужно, или пустой массив?

Ваш фрагмент прекрасно работает на моем Nexus 6P Android 7.0 API 24 эмулятора.

Ответил 24/04/2018 в 08:52
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more