java - 如何在 Android Q 中检查互联网连接?

标签 java android connection

在 Android Q 之前,您所要做的就是使用 NetworkUtils 类。但是这个类在 API 29 中被弃用了。
我一直在寻找替代方案,但似乎找不到。

那么,如何在 Android Q 中检查互联网连接?

最佳答案

使用此代码段。

     @IntRange(from = 0, to = 3)
public static int getConnectionType(Context context) {
    int result = 0; // Returns connection type. 0: none; 1: mobile data; 2: wifi
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (cm != null) {
            NetworkCapabilities capabilities = cm.getNetworkCapabilities(cm.getActiveNetwork());
            if (capabilities != null) {
                if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                    result = 2;
                } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                    result = 1;
                } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
                    result = 3;
                }
            }
        }
    } else {
        if (cm != null) {
            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            if (activeNetwork != null) {
                // connected to the internet
                if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
                    result = 2;
                } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
                    result = 1;
                } else if (activeNetwork.getType() == ConnectivityManager.TYPE_VPN) {
                    result = 3;
                }
            }
        }
    }
    return result;
}

快乐编码:)

关于java - 如何在 Android Q 中检查互联网连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60827877/

相关文章:

php - 使用 PHP 连接到 MySQL 数据库

java - java中如何输出arraylist的内容?

java - android-studio java.lang.NullPointerException onPostExecute应用程序在电话不在模拟器上崩溃

android - 如何在 Jetpack Compose Material 3 中制作 cradled FAB?

android - ViewPager 只加载一次 fragment

vb6 - [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 vb6

java - 在 Heroku 上部署 Java + Groovy 混合代码时出错

java - 创建和使用自定义 jar 文件时出现问题

java - 使用工作日并寻找 future 的日子

mysql - Cygwin 上 Vagrant 中的 Puphpet MySQL Workbench 连接