[英]NetWorkInfo, connectivityManager.ActiveNetworkInfo, and .IsConnected are obsolete
我有一個面向 Android 8.0(API 級別 26 - Oreo)到 Android 10.0(API 級別 29 - Q)的應用程序,以下代碼已棄用:
ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
NetworkInfo activeConnection = connectivityManager.ActiveNetworkInfo;
bool isOnline = (activeConnection != null) && activeConnection.IsConnected;
如果NetworkInfo
和與之相關的任何東西都貶值了,我在它的位置使用什么。 我一整天都在研究這個問題,我看到的每一個建議都使用了折舊的功能(用 java 編寫,這對我來說是個謎)。 所以請不要告訴我這是一個已經在某處發布的問題的重復,它不是。 另外,如果您提供代碼,請使用 c#。
雖然代碼在 Kotlin 中,但我希望你能理解什么是替代方案。
fun isConnectedToTheInternet(): Boolean {
val cm = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cm.run {
cm.getNetworkCapabilities(cm.activeNetwork)?.run {
return when {
hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}
}
} else {
cm.run {
cm.activeNetworkInfo?.run {
if (type == ConnectivityManager.TYPE_WIFI) {
return true
} else if (type == ConnectivityManager.TYPE_MOBILE) {
return true
}
}
}
}
return false
}
如果它可以幫助您,或者是否有人可以將此代碼轉換為 C#。
這段代碼在 Kotlin 中是有效的,並且沒有折舊。
private fun isInternetConnection(): Boolean {
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val capability = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
return capability?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false
}
希望能幫到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.