Android 开启关闭连接Wifi的工具类

public class WifiUtils {

    private final WifiManager mWifiManager;

    public WifiUtils(Context context) {
        mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    }

    //判断WiFi是否打开
    public boolean isopenWifi() {
        return mWifiManager.isWifiEnabled();
    }

    //开启WiFi
    public boolean openWifi() {
        if (!mWifiManager.isWifiEnabled()) {
            boolean b = mWifiManager.setWifiEnabled(true);
            return b;
        }
        return true;
    }

    //关闭WiFi
    public boolean closeWifi() {
        if (mWifiManager.isWifiEnabled()) {
            boolean b = mWifiManager.setWifiEnabled(false);
            return b;
        }
        return true;
    }

    //搜索附近WiFi
    public void searchWifi() {
        mWifiManager.startScan();
    }

    //搜索附近WiFi的结果
    public List<ScanResult> getsearchWifiData() {
        return mWifiManager.getScanResults();
    }

    //根据信号轻度划分等级level信号强度,i等级,自己决定
    public int getImagelevel(int level, int i) {
        return mWifiManager.calculateSignalLevel(level, i);
    }

    //判断wifi是否有加密
    public static boolean checkAuth(ScanResult scanResult) {
        boolean needPassword = false;
        String capabilities = scanResult.capabilities;
        if (capabilities.contains("WPA") || capabilities.contains("WEP")) {
            needPassword = true;
        }
        return needPassword;
    }

    //判断WiFi是否连接过保存过密码
    public boolean connectSavedWifi(String ssid) {
        boolean saved = false;
        //去获得ssid对应的所保存的这个wifi的信息呢(wifi的networkId)
        WifiConfiguration wifiConfiguration = getNetWorkConfig(ssid);
        if (wifiConfiguration != null) {
            //以前保存过的
            saved = true;
            //还得去连接这个wifi了
            mWifiManager.enableNetwork(wifiConfiguration.networkId, true);
        }
        return saved;
    }

    //根据这个ssid,来获得以前保存过的连接过的wifi的信息
    private WifiConfiguration getNetWorkConfig(String ssid) {
        WifiConfiguration wifiConfiguration = null;
        //1 先把以前所有连接过的wifi统统找出来
        List<WifiConfiguration> configuredNetworks = mWifiManager.getConfiguredNetworks();
        //考虑一下保存的格式,在参数的左右两边分别加两个双引号
        ssid = "\"" + ssid + "\"";
        //2 遍历,如果这个wifi的ssid和参数传进来的ssid相等,说明以前还真连接过
        for (WifiConfiguration configuredNetwork : configuredNetworks) {
            String configSSID = configuredNetwork.SSID;
            if (ssid.equals(configSSID)) {
                wifiConfiguration = configuredNetwork;
            }
        }
        return wifiConfiguration;
    }


    public enum TYPE_PASSWORD {TYPE_PASSWORD_NONE, TYPE_PASSWORD_WPA}

    //连接WiFi
    public boolean connetWifi(String id, String pwd, TYPE_PASSWORD typePassword) {
        WifiConfiguration wifiConfiguration = getWifiConfiguration(id, pwd, typePassword);
        int networkid = mWifiManager.addNetwork(wifiConfiguration);
        return mWifiManager.enableNetwork(networkid, true);
    }

    //关闭WiFi
    public String disconnetWifi() {
        WifiInfo connectionInfo = mWifiManager.getConnectionInfo();
        int networkId = connectionInfo.getNetworkId();
        if (networkId == -1) {
            return "当前没有连接WiFi";
        } else {
            boolean b = mWifiManager.disableNetwork(networkId);
            return b ? "关闭连接成功" : "关闭连接失败";
        }
    }

    private WifiConfiguration getWifiConfiguration(String id, String pwd, TYPE_PASSWORD typePassword) {
        WifiConfiguration wifiConfiguration = new WifiConfiguration();
        wifiConfiguration.SSID = id;
        if (typePassword == TYPE_PASSWORD_NONE) {
            //配置成无需加密的wifi
            //设置密码为空,没有加密
            wifiConfiguration.wepKeys[0] = "\"\"";
            wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            wifiConfiguration.wepTxKeyIndex = 0;
        } else if (typePassword == TYPE_PASSWORD_WPA) {
            //配置成WPA加密的wifi
            //Log.e("m520iii",id+"///"+pwd);
            wifiConfiguration.preSharedKey = "\"" + pwd + "\"";
            wifiConfiguration.hiddenSSID = true;
            wifiConfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
            wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
            wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
            wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
        }
        return wifiConfiguration;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值