Подтвердить что ты не робот

Служба GeoCoder недоступна

Служба GeoCoder недоступна

Я использую GeoCoder для получения AddressLocation. К сожалению, метод запускает IOException saying: "Service not Available".

qaru.site/info/179147/... объясняет, что происходит, потому что я тестировал его полностью (разрешения пользователя, версии сборки, перезагрузки, ограничения API GeoCoding и т.д.).

Google Play-Services (или LocationService), который вы можете найти в: Настройки Android → (Управление) → Процесс выполнения, разбился или остановился. Он перезапускается, но забывает связывать GeoCoderService с NetworkLocator.

"Решение" этой ошибки - перезапустить телефон Android, потому что при перезагрузке GeoCoderService привязан к NetworkLocater. Конечно, я не нахожу это решением.

Вопрос

Мой вопрос в том, как сбой LocationService или его остановка в первую очередь?

То, что я сделал, это принудительное прекращение Службы Google Play вручную, и некоторые устройства перезапустили LocationService, но некоторые не сделали этого.

НЕ РАБОТАЕТ (не перезапустил LocationService)

  • 4.0.3 Samsung Galaxy Note (GT-N7000)
  • 4.0.4 Samsung Tablet GT-P7100
  • 4.1.2 nexus S
  • 4.1.2 Samsung Galaxy S III (GT-I9300)

РАБОТА (перезапустил LocationService)

  • 2.3.5 HTC Wildfired S
  • 4.0.3 Acer A500
  • 4.1.1 Samsung Galaxy Note II (GT-7100)
  • 4.1.2 Samsung Galaxy S II (GT-I9105P)
  • 4.2.2 Samsung Tablet GT-P7500
  • 4.2.2 Nexus 7
  • 4.3 Galaxy Nexus

Кто-нибудь знает, в чем причина того, что служба Google Play (LocationService) сработала или остановилась после запуска?

Я уже обострил эту проблему на b.Android.com и лично связался с разработчиками Android.

Я видел, что моя проблема обсуждалась в других потоках, но не делала никаких выводов:

4b9b3361

Ответ 1

Некоторые устройства не имеют поддержки для Geocoder, поэтому вам нужно создать собственный геокодер.

В принципе, вам нужно создать асинхронную задачу для запроса google для адреса и обработать ответ json.

Используя aquery, я делаю что-то вроде этого:

public void asyncJson(String address){
        address = address.replace(" ", "+");

        String url = "http://maps.googleapis.com/maps/api/geocode/json?address="+ address +"&sensor=true";

        aq.ajax(url, JSONObject.class, new AjaxCallback<JSONObject>() {

                @Override
                public void callback(String url, JSONObject json, AjaxStatus status) {                        

                        if(json != null){

                                 //here you work with the response json
                                 JSONArray results = json.getJSONArray("results");                               
                                Toast.makeText(context, results.getJSONObject(1).getString("formatted_address"));

                        }else{                                
                                //ajax error, show error code
                                Toast.makeText(aq.getContext(), "Error:" + status.getCode(), Toast.LENGTH_LONG).show();
                        }
                }
        });        
}

Ответ 2

Перезапустите проверку устройства еще раз (у меня такая же проблема).

Ответ 3

Вы можете добавить Samsung Galaxy S II с Android 4.1.2 в список НЕ РАБОТАЕТ. Это раздражающая ошибка, и работа над ней заключается в том, чтобы напрямую обращаться к API GMaps. С моей точки зрения, это происходит, когда пользователь убивает все приложения с помощью встроенного диспетчера задач для освобождения ресурсов/памяти.

Ответ 4

Попробуйте перезапустить службу "Сетевое расположение" в приложениях Manege.

Ответ 5

У меня была такая же ошибка, добавьте ниже разрешения для ее разрешения.

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
<uses-permission android:name="android.permission.INTERNET" />