Überprüfen Sie die Internetverbindung Android in Kotlin
Lesezeit: 6 Minuten
Kakashi
Ich habe die Antwort von dieser versucht (die akzeptierte Antwort). Ich kann die “PING”-Methode verwenden, aber die Benutzeroberfläche wurde schwarz, da sie besagt, dass sie den UI-Thread blockiert. Es sah nicht gut aus und war störend, also habe ich versucht, die zweite Methode “Mit einem Socket im Internet verbinden” zu verwenden, aber ich weiß nicht, wie ich die Klasse in Kotlin verwenden soll.
Dies ist das Ergebnis der Konvertierung von Java in Kotlin durch Android Studio
Dies prüft nur, ob ein Netzwerk verfügbar ist, aber nicht, ob die Verbindung funktioniert. Wenn Sie beispielsweise mit Ihrem WLAN-Router verbunden sind, der Router jedoch vom Modem getrennt ist, wird dieser Code zurückgegeben true
– Thanh Nguyen
3. Oktober um 18:49 Uhr
Überprüfen Sie die Internetverbindung in Android Kotlin
fun isNetworkAvailable(context: Context?): Boolean {
if (context == null) return false
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
if (capabilities != null) {
when {
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> {
return true
}
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> {
return true
}
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> {
return true
}
}
}
} else {
val activeNetworkInfo = connectivityManager.activeNetworkInfo
if (activeNetworkInfo != null && activeNetworkInfo.isConnected) {
return true
}
}
return false
}
>= Build.VERSION_CODES.Q ist nicht Build.VERSION_CODES.M? Das sagte Linter in AndroidStudio
– ejdrian313
6. Juli 2020 um 6:46 Uhr
@ejdrian313 dies bedeutet, dass Ihre aktuelle Buildversion (M = Marshmallow, Android 5) unter Q (Android 10) liegt, was erforderlich ist, um den Code innerhalb der if-Anweisung auszuführen.
– pentexnyx
14. August 2020 um 22:14 Uhr
Rufen Sie die AsyncTask auf diese Weise auf, es sollte funktionieren. Sie müssen nichts in Ihrem InternetCheck AsyncTask ändern. Grundsätzlich müssen Sie ein Objekt übergeben, das die Consumer-Schnittstelle implementiert, die in der InternetCheck-Klasse definiert ist.
fun verifyAvailableNetwork(activity:AppCompatActivity):Boolean{
val connectivityManager=activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo=connectivityManager.activeNetworkInfo
return networkInfo!=null && networkInfo.isConnected
}
Überwachung der Internetverbindung in Echtzeit mit LiveData – Kotlin
Ich bin auf dieses erstaunliche gestoßen Lernprogramm auf Youtube. Wir müssen lediglich eine Hilfsdatei hinzufügen, die erweitert wird Lebensdaten und können es in unserer Aktivität oder unserem Fragment beobachten.
und diese Funktion sollte es tun. Es wird basierend auf seiner Konnektivität einen booleschen Wert zurückgeben
fun isOnline(context: Context): Boolean {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val n = cm.activeNetwork
if (n != null) {
val nc = cm.getNetworkCapabilities(n)
//It will check for both wifi and cellular network
return nc!!.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
}
return false
} else {
val netInfo = cm.activeNetworkInfo
return netInfo != null && netInfo.isConnectedOrConnecting
}
}
Es hat eine veraltete Methode sowie eine neueste Methode, die auf Ihrer API-Version basiert.
Vlad
Kürzeste Version
val Context.isConnected: Boolean
get() {
return (getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager)
.activeNetworkInfo?.isConnected == true
}
Dies prüft nur, ob wir ein Netzwerk haben, nicht, ob wir “online” sind, dh mit dem Internet verbunden sind.
– Lalle
11. Juni 2019 um 15:21 Uhr
14320000cookie-checkÜberprüfen Sie die Internetverbindung Android in Kotlinyes