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;
    }
}