Ultra-SDP v1.0.0版本的 MD5 值为:5418115cd4b552c4cd79d6d68815af17
以下内容为反编译后的 NetworkUtils.java 源代码,内容仅作参考
package com.xuexiang.xutil.net;
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import com.xuexiang.xutil.XUtil;
import com.xuexiang.xutil.common.ShellUtils;
import com.xuexiang.xutil.common.logger.Logger;
import com.xuexiang.xutil.file.CloseUtils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
public final class NetworkUtils {
public enum NetState {
NET_NO,
NET_2G,
NET_3G,
NET_4G,
NET_5G,
NET_WIFI,
NET_ETHERNET,
NET_UNKNOWN
}
private static byte byteOfInt(int i, int i2) {
return (byte) (i >> (i2 * 8));
}
private NetworkUtils() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
public static void openWirelessSettings() {
XUtil.getContext().startActivity(new Intent("android.settings.WIRELESS_SETTINGS").setFlags(268435456));
}
private static NetworkInfo getActiveNetworkInfo() {
ConnectivityManager connectivityManager = getConnectivityManager();
if (connectivityManager == null) {
return null;
}
return connectivityManager.getActiveNetworkInfo();
}
public static boolean isNetworkAvailable() {
NetworkInfo[] allNetworkInfo;
ConnectivityManager connectivityManager = getConnectivityManager();
if (connectivityManager == null || (allNetworkInfo = connectivityManager.getAllNetworkInfo()) == null) {
return false;
}
for (NetworkInfo networkInfo : allNetworkInfo) {
if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
return false;
}
public static boolean isHaveInternet() {
NetworkInfo activeNetworkInfo;
try {
ConnectivityManager connectivityManager = getConnectivityManager();
if (connectivityManager == null || (activeNetworkInfo = connectivityManager.getActiveNetworkInfo()) == null || !activeNetworkInfo.isConnected()) {
return false;
}
return activeNetworkInfo.getState() == NetworkInfo.State.CONNECTED;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static boolean isGpsEnabled() {
return ((LocationManager) XUtil.getContext().getSystemService("location")).isProviderEnabled("gps");
}
public static boolean isMobile() {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isAvailable() && activeNetworkInfo.getType() == 0;
}
public static boolean isWifi() {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isAvailable() && activeNetworkInfo.getType() == 1;
}
public static boolean is3G() {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isAvailable() && activeNetworkInfo.getType() == 0;
}
public static boolean is4G() {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting() && activeNetworkInfo.getType() == 13;
}
public static boolean isWifiEnabled() {
WifiManager wifiManager = getWifiManager();
return wifiManager != null && wifiManager.isWifiEnabled();
}
public static void setWifiEnabled(boolean z) {
WifiManager wifiManager = getWifiManager();
if (wifiManager == null) {
return;
}
if (z) {
if (wifiManager.isWifiEnabled()) {
return;
}
wifiManager.setWifiEnabled(true);
} else if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
}
public static boolean isAvailableByPing() {
return isAvailableByPing(null);
}
public static boolean isAvailableByPing(String str) {
ShellUtils.CommandResult execCommand = ShellUtils.execCommand(String.format("ping -c 1 %s", (str == null || str.length() <= 0) ? "223.5.5.5" : "223.5.5.5"), false);
boolean z = execCommand.result == 0;
if (execCommand.errorMsg != null) {
Logger.dTag("NetworkUtils", "isAvailableByPing() called" + execCommand.errorMsg);
}
if (execCommand.successMsg != null) {
Logger.dTag("NetworkUtils", "isAvailableByPing() called" + execCommand.successMsg);
}
return z;
}
public static boolean getMobileDataEnabled() {
Method declaredMethod;
try {
TelephonyManager telephonyManager = (TelephonyManager) XUtil.getContext().getSystemService("phone");
if (telephonyManager != null && (declaredMethod = telephonyManager.getClass().getDeclaredMethod("getDataEnabled", new Class[0])) != null) {
return ((Boolean) declaredMethod.invoke(telephonyManager, new Object[0])).booleanValue();
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static WifiManager getWifiManager() {
return (WifiManager) XUtil.getContext().getApplicationContext().getSystemService("wifi");
}
public static ConnectivityManager getConnectivityManager() {
return (ConnectivityManager) XUtil.getContext().getSystemService("connectivity");
}
public static InetAddress getLocalInetAddress() {
WifiManager wifiManager = getWifiManager();
if (wifiManager != null && isWifi()) {
return getWifiInetAddress(wifiManager);
}
return getInetAddressByEnumerate();
}
private static InetAddress getInetAddressByEnumerate() {
Enumeration<NetworkInterface> enumeration;
try {
enumeration = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e) {
e.printStackTrace();
enumeration = null;
}
}
private static InetAddress getWifiInetAddress(WifiManager wifiManager) {
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
if (ipAddress == 0) {
return null;
}
return intToInet(ipAddress);
}
private static InetAddress intToInet(int i) {
byte[] bArr = new byte[4];
for (int i2 = 0; i2 < 4; i2++) {
bArr[i2] = byteOfInt(i, i2);
}
try {
return InetAddress.getByAddress(bArr);
} catch (UnknownHostException e) {
e.printStackTrace();
return null;
}
}
public static int ipToInt(String str) {
String[] split = str.split("\\.");
int i = 0;
for (int i2 = 0; i2 < split.length; i2++) {
double d = i;
double parseInt = Integer.parseInt(split[i2]) % 256;
double pow = Math.pow(256.0d, 3 - i2);
Double.isNaN(parseInt);
Double.isNaN(d);
i = (int) (d + (parseInt * pow));
}
return i;
}
public static String ipToString(int i) {
if (i == 0) {
return null;
}
return ipToString(i, ".");
}
private static String ipToString(int i, String str) {
if (i > 0) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append((int) byteOfInt(i, 0));
stringBuffer.append(str);
stringBuffer.append((int) byteOfInt(i, 1));
stringBuffer.append(str);
stringBuffer.append((int) byteOfInt(i, 2));
stringBuffer.append(str);
stringBuffer.append((int) byteOfInt(i, 3));
return stringBuffer.toString();
}
return null;
}
public static String getIPAddress(boolean z) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
LinkedList linkedList = new LinkedList();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface nextElement = networkInterfaces.nextElement();
if (nextElement.isUp() && !nextElement.isLoopback()) {
Enumeration<InetAddress> inetAddresses = nextElement.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
linkedList.addFirst(inetAddresses.nextElement());
}
}
}
Iterator it = linkedList.iterator();
while (it.hasNext()) {
InetAddress inetAddress = (InetAddress) it.next();
if (!inetAddress.isLoopbackAddress()) {
String hostAddress = inetAddress.getHostAddress();
boolean z2 = hostAddress.indexOf(58) < 0;
if (z) {
if (z2) {
return hostAddress;
}
} else if (!z2) {
int indexOf = hostAddress.indexOf(37);
if (indexOf < 0) {
return hostAddress.toUpperCase();
}
return hostAddress.substring(0, indexOf).toUpperCase();
}
}
}
return "";
} catch (SocketException e) {
e.printStackTrace();
return "";
}
}
public static String getBroadcastIpAddress() {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
new LinkedList();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface nextElement = networkInterfaces.nextElement();
if (nextElement.isUp() && !nextElement.isLoopback()) {
List<InterfaceAddress> interfaceAddresses = nextElement.getInterfaceAddresses();
for (int i = 0; i < interfaceAddresses.size(); i++) {
InetAddress broadcast = interfaceAddresses.get(i).getBroadcast();
if (broadcast != null) {
return broadcast.getHostAddress();
}
}
continue;
}
}
return "";
} catch (SocketException e) {
e.printStackTrace();
return "";
}
}
public static String getDomainAddress(String str) {
try {
return InetAddress.getByName(str).getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
return "";
}
}
public static NetState getNetStateType() {
if (isEthernet()) {
return NetState.NET_ETHERNET;
}
NetworkInfo activeNetworkInfo = getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()) {
if (activeNetworkInfo.getType() == 1) {
return NetState.NET_WIFI;
}
if (activeNetworkInfo.getType() == 0) {
switch (activeNetworkInfo.getSubtype()) {
case 1:
case 2:
case 4:
case 7:
case 11:
case 16:
return NetState.NET_2G;
case 3:
case 5:
case 6:
case 8:
case 9:
case 10:
case 12:
case 14:
case 15:
case 17:
return NetState.NET_3G;
case 13:
case 18:
return NetState.NET_4G;
case 19:
default:
String subtypeName = activeNetworkInfo.getSubtypeName();
if (subtypeName.equalsIgnoreCase("TD-SCDMA") || subtypeName.equalsIgnoreCase("WCDMA") || subtypeName.equalsIgnoreCase("CDMA2000")) {
return NetState.NET_3G;
}
return NetState.NET_UNKNOWN;
case 20:
return NetState.NET_5G;
}
}
return NetState.NET_UNKNOWN;
}
return NetState.NET_NO;
}
private static boolean isEthernet() {
NetworkInfo networkInfo;
NetworkInfo.State state;
ConnectivityManager connectivityManager = getConnectivityManager();
if (connectivityManager == null || (networkInfo = connectivityManager.getNetworkInfo(9)) == null || (state = networkInfo.getState()) == null) {
return false;
}
return state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING;
}
public static String getNetworkOperatorName(Context context) {
String simOperator = ((TelephonyManager) context.getSystemService("phone")).getSimOperator();
if (simOperator != null) {
char c = 65535;
int hashCode = simOperator.hashCode();
if (hashCode != 49679502) {
switch (hashCode) {
case 49679470:
if (simOperator.equals("46000")) {
c = 0;
break;
}
break;
case 49679471:
if (simOperator.equals("46001")) {
c = 3;
break;
}
break;
case 49679472:
if (simOperator.equals("46002")) {
c = 1;
break;
}
break;
case 49679473:
if (simOperator.equals("46003")) {
c = 5;
break;
}
break;
default:
switch (hashCode) {
case 49679475:
if (simOperator.equals("46005")) {
c = 6;
break;
}
break;
case 49679476:
if (simOperator.equals("46006")) {
c = 4;
break;
}
break;
case 49679477:
if (simOperator.equals("46007")) {
c = 2;
break;
}
break;
}
}
} else if (simOperator.equals("46011")) {
c = 7;
}
switch (c) {
case 0:
case 1:
case 2:
return "中国移动";
case 3:
case 4:
return "中国联通";
case 5:
case 6:
case 7:
return "中国电信";
}
}
return "未知";
}
public static String getNetworkOperatorName() {
TelephonyManager telephonyManager = (TelephonyManager) XUtil.getContext().getSystemService("phone");
if (telephonyManager != null) {
return telephonyManager.getNetworkOperatorName();
}
return null;
}
public static Map<String, String> getUrlParams(String str) {
HashMap hashMap = null;
try {
String[] split = str.split("\\?");
if (split.length > 1) {
HashMap hashMap2 = new HashMap();
try {
for (String str2 : split[1].split("&")) {
String[] split2 = str2.split("=");
hashMap2.put(URLDecoder.decode(split2[0], "UTF-8"), split2.length > 1 ? URLDecoder.decode(split2[1], "UTF-8") : "");
}
return hashMap2;
} catch (UnsupportedEncodingException e) {
e = e;
hashMap = hashMap2;
e.printStackTrace();
return hashMap;
}
}
return null;
} catch (UnsupportedEncodingException e2) {
e = e2;
}
}
public static String parseUrl(String str) {
return ("".equals(str) || !str.contains("?")) ? str : str.substring(0, str.indexOf(63));
}
public static boolean isUrlValid(String str) {
return str.matches("^(http|https|ftp)\\://(((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])|([a-zA-Z0-9_\\-\\.])+\\.(com|cn|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|uk|me))((:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\\-\\._\\?\\,\\'/\\\\\\+&%\\$#\\=~])*)$");
}
public static boolean isIP(String str) {
return Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b").matcher(str).matches();
}
public static void downLoadFileByUrl(String str, String str2, String str3) throws IOException {
HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(str).openConnection();
httpURLConnection.setConnectTimeout(3000);
httpURLConnection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
InputStream inputStream = httpURLConnection.getInputStream();
byte[] readInputStream = readInputStream(inputStream);
File file = new File(str3);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream fileOutputStream = new FileOutputStream(new File(file + File.separator + str2));
fileOutputStream.write(readInputStream);
CloseUtils.closeIO(fileOutputStream, inputStream);
}
private static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] bArr = new byte[8192];
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
while (true) {
int read = inputStream.read(bArr);
if (read != -1) {
byteArrayOutputStream.write(bArr, 0, read);
} else {
byteArrayOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
}
}
}