Я наблюдаю подключение устройства с помощью BroadcastReceiver. Если устройство изменяет свое состояние с устройства в онлайн нужно выполнять некоторые геокодирования , как в приведенном ниже коде.
Проблема заключается в том , что геокодирования терпит неудачу с: java.io.IOException: grpc failed.
Если вызов получает задерживается каким - то образом (например , из - за останова) геокодировщик , кажется, работает хорошо.
Есть ли способ , чтобы получить уведомление , когда android.location.Geocoderготов к использованию?
// in BroadcastReceiver:
init {
context.registerReceiver(this, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
}
override fun onReceive(context: Context?, intent: Intent?) {
context?.let {
val activeNetworkInfo = (context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).activeNetworkInfo
val isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnected
// if `isConnected` geocoding gets triggered
}
}
// Geocoding
var coordinate: LatLng? = null
val address = arrayOf(
location.street, location.streetNumber,
location.zipCode, location.city,
location.country
).joinToString( )
try {
val geocoder = Geocoder(context)
geocoder.getFromLocationName(address, 1).firstOrNull()?.let { result ->
coordinate = LatLng(result.latitude, result.longitude)
}
} catch (a: IOException) {
coordinate = null
}
// do something with `coordinate`













