Java 网络对象的NetworkInfo.isConnected()(在API 23中已弃用)的替代方法

Java 网络对象的NetworkInfo.isConnected()(在API 23中已弃用)的替代方法,java,android,Java,Android,我想使用ConnectivityManager检查活动网络是否可以访问internet,即getActiveNetworkInfo().isConnected() 我读到我们仍然可以使用getActiveNetwork()来获取活动网络,但是对于network对象,似乎没有类似的isConnected方法。如何解决 不推荐使用的代码可在此处找到:您可以使用此方法检查连接connectivityManager.getActiveNetwork()添加到SDK 29中 public static b

我想使用
ConnectivityManager
检查活动网络是否可以访问internet,即
getActiveNetworkInfo().isConnected()

我读到我们仍然可以使用
getActiveNetwork()
来获取活动网络,但是对于
network
对象,似乎没有类似的
isConnected
方法。如何解决


不推荐使用的代码可在此处找到:

您可以使用此方法检查连接connectivityManager.getActiveNetwork()添加到SDK 29中

public static boolean isNetworkAvailable(Context context) {
    if (context == null) return false;

    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivityManager != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            if (capabilities != null) {
                if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                    return true;
                }
                if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                    return true;
                }
                return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
            } else {
                return false;
            }
        } else {
            NetworkInfo info = connectivityManager.getActiveNetworkInfo();
            return info != null && info.isConnected();
        }
    }
    return false;
}

您可以使用此方法检查连接connectivityManager.getActiveNetwork()添加到SDK 29中

public static boolean isNetworkAvailable(Context context) {
    if (context == null) return false;

    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivityManager != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            if (capabilities != null) {
                if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                    return true;
                }
                if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                    return true;
                }
                return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
            } else {
                return false;
            }
        } else {
            NetworkInfo info = connectivityManager.getActiveNetworkInfo();
            return info != null && info.isConnected();
        }
    }
    return false;
}

注意“connected”不是“can access the internet”@RyanMentley,那么如果我想使用网络对象,isConnected()的替代方案是什么?注意“connected”不是“can access the internet”@RyanMentley,那么如果我想使用网络对象,isConnected()的替代方案是什么?根据文档
getActiveNetwork())
添加到API级别23中。根据文档,在API级别23中添加了
getActiveNetwork()