NetWorkInfo,ConnectivityManager.ActiveNetworkInfo和.IsConnected已过时

问题描述 投票:0回答:2

我有一个通过Android 10.0(API级别29-Q)定位到Android 8.0(API级别26-Oreo)的应用,以下代码已过时:

            ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
            NetworkInfo activeConnection = connectivityManager.ActiveNetworkInfo;
            bool isOnline = (activeConnection != null) && activeConnection.IsConnected;

如果NetworkInfo和与之相关的任何东西都已贬值,我将在该位置使用什么。我整天都在研究这个问题,我看到的每条建议都使用了已贬值的功能(并且用Java编写,这对我来说完全是个谜)。因此,请不要告诉我这是某处已经发布的某些问题的重复,并非如此。另外,如果您提供代码,请c#。

c# android connectivity
2个回答
0
投票

尽管代码在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
    }

0
投票

[如果可以帮助您,或者有人可以将此代码转换为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
}

希望对您有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.