Служба 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.
Я видел, что моя проблема обсуждалась в других потоках, но не делала никаких выводов:
Ответы
Ответ 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" />
Ответ 6
Вы можете использовать Сервисы Google Maps.