Geocoder vrací false na isPresent ()

hlasů
0

Tak jsem napsal nějaký kód pro mapy v mé aplikaci, a funguje to na můj telefon v pohodě, bohužel to nefunguje na mém emulátoru, který není příjemné pro mě dost Zde je kód:

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());
}

Takže když jsem ladit to vidím, že proměnná „a“ je vždy false na mé emulátoru.

Používám android emulátor pro Visual Studio, protože mám procesor AMD (Ryzen 7 1800x), na kterém jsem nainstaloval Google Play a Google Play služby (mapa funguje v pohodě, prostě Geocoder nemá), nyní je tam nějaký způsob, jak to opravit ?

Když jsem četl na https://developer.android.com/reference/android/location/Geocoder.html webové stránky „Metody dotazu Geocoder vrátí prázdný seznam, pokud neexistuje žádný backend služby na platformě.“ Mohu získat službu nějak? Stáhněte si ho na mém emulátoru, nebo něco takového?

Položena 24/04/2018 v 08:14
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Za prvé, isPresent () je statická metoda, takže volání by měla být

Geocoder.isPresent();

Metoda IsPresent „Vrací hodnotu true, pokud jsou metody Geocoder getFromLocation a getFromLocationName jsou prováděny“, a v opačném případě false. Některé emulátory nemají nainstalován Geocoder služba. Je metoda

geocoder.getFromLocationName 

vracet to, co potřebujete, nebo prázdné pole?

Váš snippet funguje v pohodě na mém Nexus 6P Android 7.0 API 24 emulátoru.

Odpovězeno 24/04/2018 v 08:52
zdroj uživatelem

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