Ik ben het observeren van de connectiviteit van het apparaat met behulp van een BroadcastReceiver. Als het apparaat de status van offline verandert naar online Ik moet wat geocodering uitvoeren zoals in de onderstaande code.
Het probleem is, dat de geocoding mislukt met: java.io.IOException: grpc failed.
Als de oproep een of andere manier wordt vertraagd (bijvoorbeeld als gevolg van een breekpunt) de geocoder lijkt goed te werken.
Is er een manier om een melding wanneer het android.location.Geocoderklaar is voor gebruik?
// 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`













