【发布时间】:2023-02-02 03:46:21
【问题描述】:
我想使用网络功能检查互联网连接,但它给了我这个错误。
Must be one of: NetworkCapabilities.NET_CAPABILITY_MMS, NetworkCapabilities.NET_CAPABILITY_SUPL, NetworkCapabilities.NET_CAPABILITY_DUN, NetworkCapabilities.NET_CAPABILITY_FOTA, NetworkCapabilities.NET_CAPABILITY_IMS, NetworkCapabilities.NET_CAPABILITY_CBS, NetworkCapabilities.NET_CAPABILITY_WIFI_P2P, NetworkCapabilities.NET_CAPABILITY_IA, NetworkCapabilities.NET_CAPABILITY_RCS, NetworkCapabilities.NET_CAPABILITY_XCAP, NetworkCapabilities.NET_CAPABILITY_EIMS, NetworkCapabilities.NET_CAPABILITY_NOT_METERED, NetworkCapabilities.NET_CAPABILITY_INTERNET, NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED, NetworkCapabilities.NET_CAPABILITY_TRUSTED, NetworkCapabilities.NET_CAPABILITY_NOT_VPN, NetworkCapabilities.NET_CAPABILITY_VALIDATED, NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL, NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, NetworkCapabilities.NET_CAPABILITY_FOREGROUND, NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED, NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, NetworkCapab... [truncated]
我的代码 `有趣的 checkInternetConnection(上下文:上下文):布尔值{ val connectivityManager = context.getSystemService( Context.CONNECTIVITY_SERVICE) 作为 ConnectivityManager
val network = connectivityManager.activeNetwork?: return false
val activeNetwork = connectivityManager.getNetworkCapabilities(network)?: return false
return when{
activeNetwork.hasCapability(NetworkCapabilities.TRANSPORT_WIFI) -> true
activeNetwork.hasCapability(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
activeNetwork.hasCapability(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}
}`
我尝试使用 Android Studio 的自动更正来修复它,但它没有编写我想要的控制代码,而是用不同的代码更改了它。
【问题讨论】:
-
你不应该像使用 TRANSPORT_ 常量一样使用
activeNetwork.hasTransport(...)吗? -
另外,请记住,这些都不会告诉您手机是否有互联网连接(正如您的问题标题所暗示的)。
标签: java android android-studio kotlin mobile