Метод isPresent () геокодера всегда возвращает false - PullRequest
4 голосов
/ 31 января 2012

Я написал простое действие для проверки наличия Geocoder, вызов Geocoder.isPresent () всегда возвращает false.

Класс:

public class LocationTestActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LocationManager locationManager = (LocationManager)  this.getSystemService(Context.LOCATION_SERVICE);
        Log.d( "LocationTestActivity", "Geocoder.isPresent : " + Geocoder.isPresent() );

    }
}


AndroidManifest.xml ТАКЖЕ имеет следующие записи перед элементом «application»:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


Среда: Eclipse Indigo 3.7.1, эмулятор ICS 4.0 в XP Professional 2002 SP 3

Пожалуйста, помогите мне понять:
1. Почему Geocoder.isPresent () всегда возвращает false?
2. Какие изменения нужно сделать, чтобы Geocoder.isPresent () вернул true?

Большое спасибо заранее!

Ответы [ 3 ]

5 голосов
/ 31 января 2012

На самом деле Geocoder нужна служба, работающая в фоновом режиме на платформе.

Из документации:

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

, поэтому, если мы посмотрим на документацию isPresent(), то там будет указано.

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

Примечание: имейте в виду, что isPresent() недоступно в пластинах Pre-Api 9.

1 голос
/ 18 июня 2016

Используйте AsyncTask для получения координат с сервера, используя geocoder.Например, getFromLocationName() следует вызывать с помощью AsyncTask.Поток пользовательского интерфейса (основное действие) не позволяет задачам, которые занимают слишком много времени, поэтому метод возвращает пустой список.

1 голос
/ 31 января 2012

Тестирование этого кода в эмуляторе или устройстве?Я столкнулся с той же проблемой, когда использовал GeoCoder на эмуляторе 2.2.Но код прекрасно работает на эмуляторе 2.1.Попробуйте использовать 2.1

И код должен работать на устройстве.

...