RbChat v4.56630229版本的 MD5 值为:d137f4b55d6b64b50641a810905f5957
以下内容为反编译后的 NetworkUtils.java 源代码,内容仅作参考
package com.blankj.utilcode.util;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.autonavi.amap.mapcore.AMapEngineUtils;
import com.blankj.utilcode.util.ShellUtils;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public final class NetworkUtils {
private static final int NETWORK_TYPE_GSM = 16;
private static final int NETWORK_TYPE_IWLAN = 18;
private static final int NETWORK_TYPE_TD_SCDMA = 17;
public enum NetworkType {
NETWORK_WIFI,
NETWORK_4G,
NETWORK_3G,
NETWORK_2G,
NETWORK_UNKNOWN,
NETWORK_NO
}
private NetworkUtils() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
public static void openWirelessSettings() {
Utils.getApp().startActivity(new Intent("android.settings.WIRELESS_SETTINGS").setFlags(AMapEngineUtils.MAX_P20_WIDTH));
}
private static NetworkInfo getActiveNetworkInfo() {
return ((ConnectivityManager) Utils.getApp().getSystemService("connectivity")).getActiveNetworkInfo();
}
public static boolean isConnected() {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public static boolean isAvailableByPing() {
return isAvailableByPing(null);
}
public static boolean isAvailableByPing(String str) {
ShellUtils.CommandResult execCmd = ShellUtils.execCmd(String.format("ping -c 1 %s", (str == null || str.length() <= 0) ? "223.5.5.5" : "223.5.5.5"), false);
boolean z = execCmd.result == 0;
if (execCmd.errorMsg != null) {
Log.d("NetworkUtils", "isAvailableByPing() called" + execCmd.errorMsg);
}
if (execCmd.successMsg != null) {
Log.d("NetworkUtils", "isAvailableByPing() called" + execCmd.successMsg);
}
return z;
}
public static boolean getDataEnabled() {
try {
TelephonyManager telephonyManager = (TelephonyManager) Utils.getApp().getSystemService("phone");
Method declaredMethod = telephonyManager.getClass().getDeclaredMethod("getDataEnabled", new Class[0]);
if (declaredMethod != null) {
return ((Boolean) declaredMethod.invoke(telephonyManager, new Object[0])).booleanValue();
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void setDataEnabled(boolean z) {
try {
TelephonyManager telephonyManager = (TelephonyManager) Utils.getApp().getSystemService("phone");
Method declaredMethod = telephonyManager.getClass().getDeclaredMethod("setDataEnabled", Boolean.TYPE);
if (declaredMethod != null) {
declaredMethod.invoke(telephonyManager, Boolean.valueOf(z));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean is4G() {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isAvailable() && activeNetworkInfo.getSubtype() == 13;
}
public static boolean getWifiEnabled() {
return ((WifiManager) Utils.getApp().getSystemService("wifi")).isWifiEnabled();
}
public static void setWifiEnabled(boolean z) {
WifiManager wifiManager = (WifiManager) Utils.getApp().getSystemService("wifi");
if (z) {
if (wifiManager.isWifiEnabled()) {
return;
}
wifiManager.setWifiEnabled(true);
} else if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
}
public static boolean isWifiConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager) Utils.getApp().getSystemService("connectivity");
return (connectivityManager == null || connectivityManager.getActiveNetworkInfo() == null || connectivityManager.getActiveNetworkInfo().getType() != 1) ? false : true;
}
public static boolean isWifiAvailable() {
return getWifiEnabled() && isAvailableByPing();
}
public static String getNetworkOperatorName() {
TelephonyManager telephonyManager = (TelephonyManager) Utils.getApp().getSystemService("phone");
if (telephonyManager != null) {
return telephonyManager.getNetworkOperatorName();
}
return null;
}
public static NetworkType getNetworkType() {
NetworkType networkType = NetworkType.NETWORK_NO;
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
if (activeNetworkInfo == null || !activeNetworkInfo.isAvailable()) {
return networkType;
}
if (activeNetworkInfo.getType() == 1) {
return NetworkType.NETWORK_WIFI;
}
if (activeNetworkInfo.getType() == 0) {
switch (activeNetworkInfo.getSubtype()) {
case 1:
case 2:
case 4:
case 7:
case 11:
case 16:
return NetworkType.NETWORK_2G;
case 3:
case 5:
case 6:
case 8:
case 9:
case 10:
case 12:
case 14:
case 15:
case 17:
return NetworkType.NETWORK_3G;
case 13:
case 18:
return NetworkType.NETWORK_4G;
default:
String subtypeName = activeNetworkInfo.getSubtypeName();
if (subtypeName.equalsIgnoreCase("TD-SCDMA") || subtypeName.equalsIgnoreCase("WCDMA") || subtypeName.equalsIgnoreCase("CDMA2000")) {
return NetworkType.NETWORK_3G;
}
return NetworkType.NETWORK_UNKNOWN;
}
}
return NetworkType.NETWORK_UNKNOWN;
}
public static String getIPAddress(boolean z) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface nextElement = networkInterfaces.nextElement();
if (nextElement.isUp()) {
Enumeration<InetAddress> inetAddresses = nextElement.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress nextElement2 = inetAddresses.nextElement();
if (!nextElement2.isLoopbackAddress()) {
String hostAddress = nextElement2.getHostAddress();
boolean z2 = hostAddress.indexOf(58) < 0;
if (z) {
if (z2) {
return hostAddress;
}
} else if (!z2) {
int indexOf = hostAddress.indexOf(37);
return indexOf < 0 ? hostAddress.toUpperCase() : hostAddress.substring(0, indexOf).toUpperCase();
}
}
}
continue;
}
}
return null;
} catch (SocketException e) {
e.printStackTrace();
return null;
}
}
public static String getDomainAddress(String str) {
try {
return InetAddress.getByName(str).getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
return null;
}
}
}