首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetWorkInfo、connectivityManager.ActiveNetworkInfo和.IsConnected已过时

NetWorkInfo、connectivityManager.ActiveNetworkInfo和.IsConnected已过时
EN

Stack Overflow用户
提问于 2020-03-10 07:20:54
回答 2查看 93关注 0票数 0

我有一个应用程序,目标是Android 8.0 (API Level 26 - Oreo)到Android 10.0 (API Level 29 - Q),以下代码已经折旧:

代码语言:javascript
复制
            ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
            NetworkInfo activeConnection = connectivityManager.ActiveNetworkInfo;
            bool isOnline = (activeConnection != null) && activeConnection.IsConnected;

如果NetworkInfo和任何与它相关的东西都折旧了,我该用什么来代替它呢?我一整天都在研究这个问题,我看到的每个建议都使用了被贬低的功能(而且是用java编写的,这对我来说完全是个谜)。所以请不要告诉我这是某个地方已经发布的问题的副本,它不是。另外,如果你提供代码,请使用c#。

EN

回答 2

Stack Overflow用户

发布于 2020-03-10 08:05:11

虽然代码是用Kotlin编写的,但我希望您能理解另一种选择。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2020-03-10 17:50:41

如果它能帮助你,或者如果有人能把这段代码转换成C#。

这段代码是Kotlin中的折旧函数,并且是

代码语言:javascript
复制
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
}

希望能帮到你

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60609598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档