【问题标题】:How to Internet Connectivity API 30 or higher?如何使用 Internet Connectivity API 30 或更高版本?
【发布时间】: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


【解决方案1】:

我用它来检查设备是否确实有连接

fun isConnected(context: Context):Boolean{
        val cManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val nCapabilities = cManager.getNetworkCapabilities(cManager.activeNetwork)
        return nCapabilities != null
    }

它对我有用,你可以试试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多