Java 检查互联网是否可用-我们是否应该检查网络功能。传输\u蓝牙、传输\u VPN。。。也

Java 检查互联网是否可用-我们是否应该检查网络功能。传输\u蓝牙、传输\u VPN。。。也,java,android,networking,Java,Android,Networking,以前,在API 28之前,我们可以使用NetworkInfo,不费吹灰之力地检查Internet是否可用。只需调用isconnected或connecting即可 private static boolean isInternetAvailable(Context context) { ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

以前,在API 28之前,我们可以使用
NetworkInfo
,不费吹灰之力地检查Internet是否可用。只需调用
isconnected或connecting
即可

private static boolean isInternetAvailable(Context context) {
    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm == null) {
        // Will it happen ever?
        return false;
    }
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}
但是,
NetworkInfo
的许多方法都被弃用。因此,我们需要将代码修改为

private static boolean isInternetAvailable(Context context) {
    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm == null) {
        // Will it happen ever?
        return false;
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        Network activeNetwork = cm.getActiveNetwork();
        if (activeNetwork == null) {
            return false;
        }

        NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(activeNetwork);
        if (networkCapabilities != null) {
            if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                return true;
            } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                return true;
            } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)){
                return true;
            }
        }

        return false;
    } else {
        NetworkInfo networkInfo = cm.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }
}
我们想知道,我们是否应该对以下剩余功能进行检查,以确定Internet是否可用

  • TRANSPORT\u蓝牙
  • TRANSPORT\u VPN
  • TRANSPORT\u WIFI\u AWARE
  • TRANSPORT\u LOWPAN
因为,很难访问所有类型的网络连接,我们也没有足够的时间来进行所有的案例测试