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

Ошибка Geocoder grpc

В прошлом месяце так геокодер начал сбой каждый раз с ошибкой "grpc failed", и я, похоже, не могу ее решить. Я просмотрел java.io.IOException: grpc не удалось, но на самом деле это не решило проблему.

Для примера, код

Geocoder geocoder = new Geocoder(context, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1); // Here if fails with "grpc failed"

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

Если я скомпилирован против SDK 25, используя инструмент сборки 25, он работает с эмулятором с SDK 25. Но если я попытаюсь использовать эмулятор с SDK 24, 26 или любой другой версией SDK, он потерпит неудачу с "ошибкой grpc". Я попытался создать новое виртуальное устройство и т.д., Но та же проблема.

Я не знаю, как это исправить и в чем проблема.

Текущая настройка: targetSDK/compileSDK 25, инструмент сборки 25.0.3, Android Studio 2.3.3, обычный эмулятор. (Я пробовал другие инструменты сборки и версии SDK, но проблема все еще остается)

Любые идеи?

4b9b3361

Ответ 1

Проблема может заключаться в том, что вы пытаетесь использовать Geocoder в основном потоке, если вы используете IntentService, у вас есть этот URL для создания в другом процессе, хотя вы всегда можете использовать Asynctask или подобное.

Ответ 2

Это связано с сервисом Google Play на виртуальных устройствах. Используйте API25 и версию 7.1.1 для решения.

Вот примеры:

Когда я пытаюсь использовать в Genymotion, а службы Google Play отключены на виртуальном устройстве (ошибка: услуга недоступна):

10-07 07:13:30.023 3481-3481/com.unalfaruk.mapexample I/System.out: Your Location: 65.96992333333333 -18.540028333333332
10-07 07:13:30.023 3481-3481/com.unalfaruk.mapexample W/System.err: java.io.IOException: Service not Available
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err:     at android.location.Geocoder.getFromLocation(Geocoder.java:136)
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err:     at com.unalfaruk.mapexample.MapsActivity$1.onLocationChanged(MapsActivity.java:71)
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err:     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:297)

введите описание изображения здесь

Когда я пытаюсь использовать в Genymotion, а службы Google Play включены (ошибка: ошибка grpc):

10-07 07:18:56.325 2694-2694/com.unalfaruk.mapexample I/System.out: Your Location: 65.96669666666666 -15.0
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err: java.io.IOException: grpc failed
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err:     at android.location.Geocoder.getFromLocation(Geocoder.java:136)
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err:     at com.unalfaruk.mapexample.MapsActivity$1.onLocationChanged(MapsActivity.java:71)
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err:     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:297)

введите описание изображения здесь

Когда я пытаюсь выполнить в AVD Manager, а службы Google Play включены (нет ошибок):

10-07 14:20:14.769 3159-3159/com.unalfaruk.mapexample I/System.out: Your Location: 37.421998333333335 -122.08400000000002
10-07 14:20:15.220 3159-3159/com.unalfaruk.mapexample I/System.out: Your Adress: Address[addressLines=[0:"1600 Amphitheatre Parkway",1:"Mountain View, CA 94043",2:"USA"],feature=1600,admin=California,sub-admin=null,locality=Mountain View,thoroughfare=Amphitheatre Parkway,postalCode=94043,countryCode=US,countryName=United States,hasLatitude=true,latitude=37.422329,hasLongitude=true,longitude=-122.0843055,phone=null,url=null,extras=null]

введите описание изображения здесь