Java 如何在Android Q中检查互联网连接?
在Android Q之前,您所要做的就是使用NetworkUtils类。但是这个类在API 29中被弃用了。 我一直在寻找替代方案,但似乎找不到Java 如何在Android Q中检查互联网连接?,java,android,connection,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;
那么,如何在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;
}
快乐编码:)使用此代码片段。
@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;
}
快乐编码:)如果您正在寻找一个简单的代码,您可以使用:
public static boolean isConnected(Context getApplicationContext) {
boolean status = false;
ConnectivityManager cm = (ConnectivityManager) getApplicationContext.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (cm != null && cm.getActiveNetwork() != null && cm.getNetworkCapabilities(cm.getActiveNetwork()) != null) {
// connected to the internet
status = true;
}
} else {
if (cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting()) {
// connected to the internet
status = true;
}
}
return status;
}
如果您正在寻找一个简单的代码,可以使用:
public static boolean isConnected(Context getApplicationContext) {
boolean status = false;
ConnectivityManager cm = (ConnectivityManager) getApplicationContext.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (cm != null && cm.getActiveNetwork() != null && cm.getNetworkCapabilities(cm.getActiveNetwork()) != null) {
// connected to the internet
status = true;
}
} else {
if (cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting()) {
// connected to the internet
status = true;
}
}
return status;
}
ConnectionManager只检查智能手机理论上是否可以建立互联网连接。互联网连接是否确实存在(例如,如果网络质量非常差),只能通过ping或网址来确定。ConnectionManager仅检查智能手机理论上是否可以建立互联网连接。互联网连接是否确实存在,例如,如果网络质量非常差,只能通过ping或网址来确定。这就是我检查API级别的原因仔细查看代码@Remy这就是我检查API级别仔细查看代码@Remy的原因