TIM v2.3.1版本的 MD5 值为:d6957e3ee7ce901ccc491cefdea0da8c
以下内容为反编译后的 NetworkUtils.java 源代码,内容仅作参考
package com.tencent.component.network.utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
import android.net.NetworkInfo;
import android.net.Proxy;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import android.webkit.URLUtil;
import com.tencent.smtt.utils.PropertyUtils;
import java.util.HashMap;
public class NetworkUtils {
public static final String APN_NAME_WIFI = "wifi";
private static final Uri f83919a = Uri.parse("content://telephony/carriers/preferapn");
private static final HashMap<String, NetworkProxy> f83920b = new HashMap<>();
public static final class DNS {
public String primary;
public String secondary;
DNS() {
}
public String toString() {
return this.primary + "," + this.secondary;
}
}
public static class NetworkProxy implements Cloneable {
public final String host;
public final int port;
NetworkProxy(String str, int i) {
this.host = str;
this.port = i;
}
final NetworkProxy a() {
try {
return (NetworkProxy) clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj != null && (obj instanceof NetworkProxy)) {
NetworkProxy networkProxy = (NetworkProxy) obj;
if (TextUtils.equals(this.host, networkProxy.host) && this.port == networkProxy.port) {
return true;
}
}
return false;
}
public String toString() {
return this.host + ":" + this.port;
}
}
static {
f83920b.put("cmwap", new NetworkProxy("10.0.0.172", 80));
f83920b.put("3gwap", new NetworkProxy("10.0.0.172", 80));
f83920b.put("uniwap", new NetworkProxy("10.0.0.172", 80));
f83920b.put("ctwap", new NetworkProxy("10.0.0.200", 80));
}
private NetworkUtils() {
}
private static String a(int i) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(i & 255).append(".");
stringBuffer.append((i >> 8) & 255).append(".");
stringBuffer.append((i >> 16) & 255).append(".");
stringBuffer.append((i >> 24) & 255);
return stringBuffer.toString();
}
private static String a(Context context) {
return PlatformUtil.version() < 11 ? Proxy.getDefaultHost() : System.getProperty("http.proxyHost");
}
private static boolean a(String str) {
return str == null || str.length() == 0;
}
private static int b(Context context) {
int parseInt;
if (PlatformUtil.version() < 11) {
parseInt = Proxy.getDefaultPort();
} else {
String property = System.getProperty("http.proxyPort");
if (!a(property)) {
try {
parseInt = Integer.parseInt(property);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
parseInt = -1;
}
if (parseInt < 0 || parseInt > 65535) {
return -1;
}
return parseInt;
}
public static java.lang.String getAPN(android.content.Context r8) {
throw new UnsupportedOperationException("Method not decompiled: com.tencent.component.network.utils.NetworkUtils.getAPN(android.content.Context):java.lang.String");
}
public static NetworkInfo getActiveNetworkInfo(Context context) {
try {
return ((ConnectivityManager) context.getSystemService("connectivity")).getActiveNetworkInfo();
} catch (Throwable th) {
com.tencent.component.network.module.base.b.d("NetworkUtil", "fail to get active network info", th);
return null;
}
}
public static DNS getDNS(Context context) {
DhcpInfo dhcpInfo;
DNS dns = new DNS();
if (context != null && isWifiConnected(context) && (dhcpInfo = ((WifiManager) context.getSystemService("wifi")).getDhcpInfo()) != null) {
dns.primary = a(dhcpInfo.dns1);
dns.secondary = a(dhcpInfo.dns2);
}
if (dns.primary == null && dns.secondary == null) {
dns.primary = d.a(PropertyUtils.PROPERTY_DNS_PRIMARY, null);
dns.secondary = d.a(PropertyUtils.PROPERTY_DNS_SECNDARY, null);
}
return dns;
}
public static NetworkProxy getProxy(Context context) {
if (isMobileConnected(context)) {
String a2 = a(context);
int b2 = b(context);
if (a(a2) || b2 < 0) {
return null;
}
return new NetworkProxy(a2, b2);
}
return null;
}
public static NetworkProxy getProxy(Context context, boolean z) {
return !z ? getProxy(context) : getProxyByAPN(context);
}
public static NetworkProxy getProxyByAPN(Context context) {
if (isMobileConnected(context)) {
NetworkProxy networkProxy = f83920b.get(getAPN(context));
return networkProxy == null ? null : networkProxy.a();
}
return null;
}
public static boolean isMobileConnected(Context context) {
NetworkInfo activeNetworkInfo;
if (context == null || (activeNetworkInfo = getActiveNetworkInfo(context)) == null) {
return false;
}
return activeNetworkInfo.getType() == 0 || activeNetworkInfo.getType() + 50 == 0;
}
public static boolean isNetworkAvailable(Context context) {
NetworkInfo activeNetworkInfo = getActiveNetworkInfo(context);
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public static boolean isNetworkUrl(String str) {
if (TextUtils.isEmpty(str)) {
return false;
}
if (str.startsWith("http://") || str.startsWith("https://")) {
return true;
}
if (URLUtil.isFileUrl(str)) {
return false;
}
return URLUtil.isNetworkUrl(str);
}
public static boolean isWifiConnected(Context context) {
boolean z = true;
if (context == null) {
return false;
}
NetworkInfo activeNetworkInfo = getActiveNetworkInfo(context);
if (activeNetworkInfo == null || activeNetworkInfo.getType() != 1) {
z = false;
}
return z;
}
}