WiFiAdmin.java 源代码


package liteos.osUtils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;
import java.util.List;

public class WiFiAdmin {
    static final int SECURITY_EAP = 3;
    static final int SECURITY_ERR = 4;
    static final int SECURITY_NONE = 0;
    static final int SECURITY_PSK = 2;
    static final int SECURITY_WEP = 1;
    private static final String TAG = "WifiAdmin";
    private ConnectivityManager mConnectivityManager;
    private List<WifiConfiguration> mWifiConfigurations;
    private WifiInfo mWifiInfo;
    private List<ScanResult> mWifiList;
    private WifiManager mWifiManager;

    public WiFiAdmin(Context context) {
        WifiManager wifiManager = (WifiManager) context.getSystemService("wifi");
        this.mWifiManager = wifiManager;
        this.mWifiInfo = wifiManager.getConnectionInfo();
        this.mWifiConfigurations = this.mWifiManager.getConfiguredNetworks();
        this.mConnectivityManager = (ConnectivityManager) context.getSystemService("connectivity");
    }

    public void startScan() {
        this.mWifiManager.startScan();
        this.mWifiList = this.mWifiManager.getScanResults();
    }

    public boolean isWifiEnabled() {
        return this.mWifiManager.isWifiEnabled();
    }

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

    public String getWifiSSID() {
        WifiInfo connectionInfo = this.mWifiManager.getConnectionInfo();
        this.mWifiInfo = connectionInfo;
        String ssid = connectionInfo == null ? "NULL" : connectionInfo.getSSID();
        return ssid.substring(1, ssid.length() - 1);
    }

    public String getWifiIPAdress() {
        WifiInfo wifiInfo = this.mWifiInfo;
        int ipAddress = wifiInfo == null ? 0 : wifiInfo.getIpAddress();
        return String.format("%c%c%c%c", Integer.valueOf(ipAddress & 255), Integer.valueOf((ipAddress >> 8) & 255), Integer.valueOf((ipAddress >> 16) & 255), Integer.valueOf((ipAddress >> 24) & 255));
    }

    public int getSecurity() {
        for (WifiConfiguration wifiConfiguration : this.mWifiConfigurations) {
            String wifiSSID = getWifiSSID();
            String str = wifiConfiguration.SSID;
            if (wifiSSID.equals(str.substring(1, str.length() - 1)) && this.mWifiInfo.getNetworkId() == wifiConfiguration.networkId) {
                if (wifiConfiguration.allowedKeyManagement.get(1)) {
                    return 2;
                }
                if (wifiConfiguration.allowedKeyManagement.get(2) || wifiConfiguration.allowedKeyManagement.get(3)) {
                    return 3;
                }
                return wifiConfiguration.wepKeys[0] != null ? 1 : 0;
            }
        }
        return 4;
    }

    public void addNetWork(WifiConfiguration wifiConfiguration) {
        this.mWifiManager.enableNetwork(this.mWifiManager.addNetwork(wifiConfiguration), true);
        this.mWifiManager.reconnect();
        this.mWifiManager.saveConfiguration();
    }

    public void reconnect() {
        this.mWifiManager.reconnect();
    }

    public void enableNetWork(int i) {
        this.mWifiManager.enableNetwork(i, true);
    }

    public boolean isWifiConnected() {
        return this.mConnectivityManager.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED;
    }

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

    public void disConnectionWifi(int i) {
        this.mWifiManager.disableNetwork(i);
        this.mWifiManager.disconnect();
    }

    private WifiConfiguration IsExsits(String str) {
        List<WifiConfiguration> configuredNetworks = this.mWifiManager.getConfiguredNetworks();
        if (configuredNetworks == null) {
            return null;
        }
        for (WifiConfiguration wifiConfiguration : configuredNetworks) {
            if (wifiConfiguration.SSID != null) {
                if (wifiConfiguration.SSID.equals("\"" + str + "\"")) {
                    return wifiConfiguration;
                }
            }
        }
        return null;
    }

    public void forgetWifi(String str) {
        WifiConfiguration IsExsits = IsExsits(str);
        if (IsExsits != null) {
            Log.e(TAG, "tempConfig.networkId=" + IsExsits.networkId);
            this.mWifiManager.removeNetwork(IsExsits.networkId);
            this.mWifiManager.saveConfiguration();
        }
    }

    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 + "\"";
        if (i == 1) {
            Log.e(TAG, "set open wifi");
            wifiConfiguration.hiddenSSID = true;
            wifiConfiguration.allowedKeyManagement.set(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;
    }
}