WifiAdmin.java 源代码


package utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkSpecifier;
import android.net.wifi.WifiNetworkSuggestion;
import android.os.Build;
import android.os.Handler;
import android.os.PatternMatcher;
import android.support.v4.app.ActivityCompat;
import com.hichip.base.HiLog;
import com.kuaishou.weapon.p0.g;
import com.xiaomi.mipush.sdk.Constants;
import common.HiDataValue;
import java.util.ArrayList;
import java.util.List;

public class WifiAdmin {
    private ConnectivityManager connectivityManager;
    private Context context;
    private List<WifiConfiguration> mWifiConfiguration;
    public WifiInfo mWifiInfo;
    private List<ScanResult> mWifiList;
    WifiManager.WifiLock mWifiLock;
    public WifiManager mWifiManager;
    private int m_addNetworkQ_num = 0;
    private ConnectivityManager.NetworkCallback networkCallback;
    private ConnectivityManager.NetworkCallback networkCallback2;

    static int access$008(WifiAdmin wifiAdmin) {
        int i = wifiAdmin.m_addNetworkQ_num;
        wifiAdmin.m_addNetworkQ_num = i + 1;
        return i;
    }

    public WifiAdmin(Context context) {
        this.context = context;
        WifiManager wifiManager = (WifiManager) context.getSystemService("wifi");
        this.mWifiManager = wifiManager;
        this.mWifiInfo = wifiManager.getConnectionInfo();
    }

    public void openWifi() {
        if (this.mWifiManager.isWifiEnabled()) {
            return;
        }
        this.mWifiManager.setWifiEnabled(true);
    }

    public void closeWifi() {
        if (this.mWifiManager.isWifiEnabled()) {
            this.mWifiManager.setWifiEnabled(false);
        }
    }

    public int checkState() {
        return this.mWifiManager.getWifiState();
    }

    public void acquireWifiLock() {
        this.mWifiLock.acquire();
    }

    public void releaseWifiLock() {
        if (this.mWifiLock.isHeld()) {
            this.mWifiLock.acquire();
        }
    }

    public void creatWifiLock() {
        this.mWifiLock = this.mWifiManager.createWifiLock("Test");
    }

    public List<WifiConfiguration> getConfiguration() {
        return this.mWifiConfiguration;
    }

    public void connectConfiguration(int i) {
        if (i > this.mWifiConfiguration.size()) {
            return;
        }
        this.mWifiManager.enableNetwork(this.mWifiConfiguration.get(i).networkId, true);
    }

    public void startScan() {
        this.mWifiManager.startScan();
        this.mWifiList = this.mWifiManager.getScanResults();
        if (ActivityCompat.checkSelfPermission(this.context, g.g) != 0) {
            return;
        }
        this.mWifiConfiguration = this.mWifiManager.getConfiguredNetworks();
    }

    public List<ScanResult> getWifiList() {
        return this.mWifiList;
    }

    public StringBuilder lookUpScan() {
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while (i < this.mWifiList.size()) {
            StringBuilder sb2 = new StringBuilder();
            sb2.append("Index_");
            int i2 = i + 1;
            sb2.append(new Integer(i2).toString());
            sb2.append(Constants.COLON_SEPARATOR);
            sb.append(sb2.toString());
            sb.append(this.mWifiList.get(i).toString());
            sb.append("/n");
            i = i2;
        }
        return sb;
    }

    public String getMacAddress() {
        WifiInfo wifiInfo = this.mWifiInfo;
        return wifiInfo == null ? "NULL" : wifiInfo.getMacAddress();
    }

    public String getBSSID() {
        WifiInfo wifiInfo = this.mWifiInfo;
        return wifiInfo == null ? "NULL" : wifiInfo.getBSSID();
    }

    public int getIPAddress() {
        WifiInfo wifiInfo = this.mWifiInfo;
        if (wifiInfo == null) {
            return 0;
        }
        return wifiInfo.getIpAddress();
    }

    public int getNetworkId() {
        WifiInfo wifiInfo = this.mWifiInfo;
        if (wifiInfo == null) {
            return 0;
        }
        return wifiInfo.getNetworkId();
    }

    public String getWifiInfo() {
        WifiInfo wifiInfo = this.mWifiInfo;
        return wifiInfo == null ? "NULL" : wifiInfo.toString();
    }

    public void addNetwork(WifiConfiguration wifiConfiguration) {
        int addNetwork = this.mWifiManager.addNetwork(wifiConfiguration);
        boolean enableNetwork = this.mWifiManager.enableNetwork(addNetwork, true);
        this.mWifiManager.reconnect();
        System.out.println("a--" + addNetwork);
        System.out.println("b--" + enableNetwork);
    }

    public void disconnectWifi(int i) {
        HiLog.e("");
        HiLog.e(Constants.COLON_SEPARATOR + this.mWifiManager.disableNetwork(i) + "::" + this.mWifiManager.disconnect());
    }

    public WifiConfiguration CreateWifiInfo(String str, String str2, int i) {
        WifiConfiguration wifiConfiguration = new WifiConfiguration();
        wifiConfiguration.allowedAuthAlgorithms.clear();
        wifiConfiguration.allowedGroupCiphers.clear();
        wifiConfiguration.allowedKeyManagement.clear();
        wifiConfiguration.allowedPairwiseCiphers.clear();
        wifiConfiguration.allowedProtocols.clear();
        wifiConfiguration.SSID = "\"" + str + "\"";
        WifiConfiguration IsExsits = IsExsits(str);
        if (IsExsits != null) {
            this.mWifiManager.removeNetwork(IsExsits.networkId);
        }
        if (i == 1) {
            wifiConfiguration.wepKeys[0] = "";
            wifiConfiguration.allowedKeyManagement.set(0);
            wifiConfiguration.wepTxKeyIndex = 0;
        }
        if (i == 2) {
            wifiConfiguration.hiddenSSID = true;
            wifiConfiguration.wepKeys[0] = "\"" + str2 + "\"";
            wifiConfiguration.allowedAuthAlgorithms.set(1);
            wifiConfiguration.allowedGroupCiphers.set(3);
            wifiConfiguration.allowedGroupCiphers.set(2);
            wifiConfiguration.allowedGroupCiphers.set(0);
            wifiConfiguration.allowedGroupCiphers.set(1);
            wifiConfiguration.allowedKeyManagement.set(0);
            wifiConfiguration.wepTxKeyIndex = 0;
        }
        if (i == 3) {
            wifiConfiguration.preSharedKey = "\"" + str2 + "\"";
            wifiConfiguration.hiddenSSID = true;
            wifiConfiguration.allowedAuthAlgorithms.set(0);
            wifiConfiguration.allowedGroupCiphers.set(2);
            wifiConfiguration.allowedKeyManagement.set(1);
            wifiConfiguration.allowedPairwiseCiphers.set(1);
            wifiConfiguration.allowedGroupCiphers.set(3);
            wifiConfiguration.allowedPairwiseCiphers.set(2);
            wifiConfiguration.status = 2;
        }
        return wifiConfiguration;
    }

    public WifiConfiguration IsExsits(String str) {
        List<WifiConfiguration> configuredNetworks;
        if (ActivityCompat.checkSelfPermission(this.context, g.g) == 0 && (configuredNetworks = this.mWifiManager.getConfiguredNetworks()) != null) {
            for (WifiConfiguration wifiConfiguration : configuredNetworks) {
                if (wifiConfiguration.SSID.equals("\"" + str + "\"")) {
                    return wifiConfiguration;
                }
            }
        }
        return null;
    }

    public void ddfasdf(Context context, String str, String str2, Handler handler) {
        WifiNetworkSuggestion.Builder builder = new WifiNetworkSuggestion.Builder();
        builder.setSsid("wifi-ap-ssid");
        builder.setWpa2Passphrase("wifi-ap-password");
        WifiNetworkSuggestion build = builder.build();
        ArrayList arrayList = new ArrayList();
        arrayList.add(build);
        WifiManager wifiManager = (WifiManager) context.getSystemService("wifi");
        wifiManager.removeNetworkSuggestions(new ArrayList());
        wifiManager.addNetworkSuggestions(arrayList);
    }

    public void addNetwork1_Q(final String str, String str2, final Handler handler) {
        ConnectivityManager.NetworkCallback networkCallback;
        HiLog.e("" + Build.VERSION.SDK_INT + "::" + str + "::" + str2);
        if (Build.VERSION.SDK_INT < 29) {
            return;
        }
        WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
        builder.setSsid(str);
        builder.setWpa2Passphrase(str2);
        WifiNetworkSpecifier build = builder.build();
        NetworkRequest.Builder builder2 = new NetworkRequest.Builder();
        builder2.addTransportType(1);
        builder2.addCapability(14);
        builder2.removeCapability(12);
        builder2.removeCapability(16);
        builder2.setNetworkSpecifier(build);
        NetworkRequest build2 = builder2.build();
        HiLog.e("");
        ConnectivityManager connectivityManager = this.connectivityManager;
        if (connectivityManager != null && (networkCallback = this.networkCallback) != null) {
            connectivityManager.unregisterNetworkCallback(networkCallback);
            ConnectivityManager.NetworkCallback networkCallback2 = this.networkCallback2;
            if (networkCallback2 != null) {
                this.connectivityManager.unregisterNetworkCallback(networkCallback2);
            }
            if (Build.VERSION.SDK_INT >= 29) {
                this.connectivityManager.bindProcessToNetwork(null);
            }
            this.connectivityManager = null;
            this.networkCallback = null;
            this.networkCallback2 = null;
        }
        HiLog.e("");
        this.m_addNetworkQ_num = 0;
        ConnectivityManager connectivityManager2 = (ConnectivityManager) this.context.getSystemService("connectivity");
        this.connectivityManager = connectivityManager2;
        if (connectivityManager2 != null) {
            ConnectivityManager.NetworkCallback networkCallback3 = new ConnectivityManager.NetworkCallback() {
                @Override
                public void onAvailable(Network network) {
                    WifiAdmin.access$008(WifiAdmin.this);
                    HiLog.e("Got the following address: not address");
                    HiDataValue.mHi_wifiConnect_Q = str;
                    Handler handler2 = handler;
                    if (handler2 != null) {
                        handler2.sendEmptyMessage(121);
                    }
                    if (Build.VERSION.SDK_INT >= 29 && WifiAdmin.this.connectivityManager != null) {
                        WifiAdmin.this.connectivityManager.bindProcessToNetwork(network);
                    }
                    super.onAvailable(network);
                }

                @Override
                public void onUnavailable() {
                    HiLog.e("");
                    HiDataValue.mHi_wifiConnect_Q = "";
                    Handler handler2 = handler;
                    if (handler2 != null) {
                        handler2.sendEmptyMessage(118);
                    }
                    super.onUnavailable();
                }

                @Override
                public void onLosing(Network network, int i) {
                    HiLog.e("");
                    super.onLosing(network, i);
                }

                @Override
                public void onLost(Network network) {
                    WifiAdmin.access$008(WifiAdmin.this);
                    HiLog.e("");
                    HiDataValue.mHi_wifiConnect_Q = "";
                    if (handler != null) {
                        if (WifiAdmin.this.m_addNetworkQ_num < 6) {
                            handler.sendEmptyMessage(120);
                        } else {
                            handler.sendEmptyMessage(119);
                        }
                    }
                    if (Build.VERSION.SDK_INT >= 29 && WifiAdmin.this.connectivityManager != null) {
                        WifiAdmin.this.connectivityManager.bindProcessToNetwork(null);
                    }
                    super.onLost(network);
                }

                @Override
                public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
                    HiLog.e("");
                    super.onCapabilitiesChanged(network, networkCapabilities);
                    HiLog.d("net status change! 网络连接改变");
                    if (networkCapabilities.hasCapability(16)) {
                        if (networkCapabilities.hasTransport(1)) {
                            HiLog.d("当前在使用WiFi上网");
                        } else if (networkCapabilities.hasTransport(0)) {
                            HiLog.d("当前在使用数据网络上网");
                        } else {
                            HiLog.d("当前在使用其他网络");
                        }
                    }
                }

                @Override
                public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {
                    HiLog.e("");
                    super.onLinkPropertiesChanged(network, linkProperties);
                }

                @Override
                public void onBlockedStatusChanged(Network network, boolean z) {
                    HiLog.e("");
                    super.onBlockedStatusChanged(network, z);
                }
            };
            this.networkCallback = networkCallback3;
            this.connectivityManager.requestNetwork(build2, networkCallback3);
            ConnectivityManager.NetworkCallback networkCallback4 = new ConnectivityManager.NetworkCallback() {
                @Override
                public void onAvailable(Network network) {
                    super.onAvailable(network);
                    if (Build.VERSION.SDK_INT < 29 || WifiAdmin.this.connectivityManager == null) {
                        return;
                    }
                    WifiAdmin.this.connectivityManager.bindProcessToNetwork(network);
                }

                @Override
                public void onLost(Network network) {
                    HiLog.e("");
                    if (Build.VERSION.SDK_INT >= 29 && WifiAdmin.this.connectivityManager != null) {
                        WifiAdmin.this.connectivityManager.bindProcessToNetwork(null);
                    }
                    super.onLost(network);
                }
            };
            this.networkCallback2 = networkCallback4;
            this.connectivityManager.registerNetworkCallback(build2, networkCallback4);
        }
    }

    public void addNetwork2_Q(String str, String str2) {
        ConnectivityManager.NetworkCallback networkCallback;
        if (Build.VERSION.SDK_INT >= 29) {
            NetworkRequest build = new NetworkRequest.Builder().addTransportType(1).removeCapability(12).setNetworkSpecifier(new WifiNetworkSpecifier.Builder().setSsidPattern(new PatternMatcher(str, 1)).setWpa2Passphrase(str2).build()).build();
            ConnectivityManager connectivityManager = this.connectivityManager;
            if (connectivityManager != null && (networkCallback = this.networkCallback) != null) {
                connectivityManager.unregisterNetworkCallback(networkCallback);
                this.connectivityManager = null;
                this.networkCallback = null;
            }
            HiLog.e("");
            this.connectivityManager = (ConnectivityManager) this.context.getSystemService("connectivity");
            ConnectivityManager.NetworkCallback networkCallback2 = new ConnectivityManager.NetworkCallback() {
                @Override
                public void onAvailable(Network network) {
                    HiLog.e("");
                }

                @Override
                public void onUnavailable() {
                    HiLog.e("");
                }
            };
            this.networkCallback = networkCallback2;
            this.connectivityManager.requestNetwork(build, networkCallback2);
        }
    }

    public void removeNetwork_Q() {
        this.m_addNetworkQ_num = 0;
        if (this.connectivityManager == null || this.networkCallback == null) {
            return;
        }
        HiLog.e("");
        this.connectivityManager.unregisterNetworkCallback(this.networkCallback);
        ConnectivityManager.NetworkCallback networkCallback = this.networkCallback2;
        if (networkCallback != null) {
            this.connectivityManager.unregisterNetworkCallback(networkCallback);
        }
        if (Build.VERSION.SDK_INT >= 29) {
            this.connectivityManager.bindProcessToNetwork(null);
        }
        this.connectivityManager = null;
        this.networkCallback = null;
        this.networkCallback2 = null;
        HiDataValue.mHi_wifiConnect_Q = "";
    }

    public void ddaf() {
        if (Build.VERSION.SDK_INT >= 23) {
            ConnectivityManager connectivityManager = (ConnectivityManager) this.context.getSystemService("connectivity");
            HiLog.e("");
            for (Network network : connectivityManager.getAllNetworks()) {
                NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
                HiLog.e(networkInfo.getType() + "::" + networkInfo.getTypeName() + "::" + networkInfo.toString());
            }
        }
    }
}