Java 检查互联网是否可用-我们是否应该检查网络功能。传输\u蓝牙、传输\u VPN。。。也
以前,在API 28之前,我们可以使用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);
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