android-activeNetworkInfo.type在API级别28中已弃用

android-activeNetworkInfo.type在API级别28中已弃用,第1张

概述我想使用连接管理器,它提供activeNetworkInfo.type方法来检查Android中的网络类型.这个方法在API级别28中已弃用.那么在API28中检查网络类型的解决方案是什么.我的代码是:/***CheckWiFiconnectivity*/funisWiFiConnected(context:Context):Boolean{valconnMan

我想使用连接管理器,它提供activeNetworkInfo.type方法来检查AndroID中的网络类型.这个方法在API级别28中已弃用.那么在API 28中检查网络类型的解决方案是什么.我的代码是:

/** * Check Wi Fi connectivity */fun isWiFiConnected(context: Context): Boolean {    val connManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager    return connManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI}

我的Gradle就像:

compileSdkVersion 28buildToolsversion '28.0.3'defaultConfig {        minSdkVersion 21        targetSdkVersion 28    }

解决方法:

Yes getType() is deprecated in API lavel 28

现在我们需要使用Use Callers切换到检查NetworkCapabilities.hasTransport(int)

也是 getAllNetworkInfo() is deprecated in API level 29

现在我们需要使用Use getAllNetworks()而不是getNetworkInfo(android.net.Network).

getNetworkInfo()

>返回有关特定网络的连接状态信息.

getAllNetworks()

>返回框架当前跟踪的所有网络的数组.

示例代码

fun isWiFiConnected(context: Context): Boolean {    val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager    return if (androID.os.Build.VERSION.SDK_INT >= androID.os.Build.VERSION_CODES.M) {        val network = connectivityManager.activeNetwork        val capabilitIEs = connectivityManager.getNetworkCapabilitIEs(network)        capabilitIEs != null && capabilitIEs.hasTransport(NetworkCapabilitIEs.TRANSPORT_WIFI)    } else {        connectivityManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI    }}

完整的代码

@Suppress("DEPRECATION")fun isInternetAvailable(context: Context): Boolean {    var result = false    val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {        cm?.run {            cm.getNetworkCapabilitIEs(cm.activeNetwork)?.run {                result = 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) {                    result = true                } else if (type == ConnectivityManager.TYPE_MOBILE) {                    result = true                }            }        }    }    return result}
总结

以上是内存溢出为你收集整理的android-activeNetworkInfo.type在API级别28中已弃用全部内容,希望文章能够帮你解决android-activeNetworkInfo.type在API级别28中已弃用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存