package com.rockchip.alexa.jacky.control; import android.app.AlertDialog; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import java.util.ArrayList; import java.util.List; import static android.content.Context.WIFI_SERVICE; /** * Created by GJK on 2018/4/16. */ public class WifiControl1 { private Context mContext; private WifiManager wifiManager; private List wifiConfigList; // 构造器 public WifiControl1(Context context) { mContext = context; // 取得WifiManager对象 wifiManager = (android.net.wifi.WifiManager) context.getSystemService(WIFI_SERVICE); wifiConfigList = new ArrayList<>(); } /** * 连接Wifi */ public void connectWifi(final String ssid, final int wifiType) { int networkId = -1; wifiConfigList.clear(); wifiConfigList.addAll(wifiManager.getConfiguredNetworks()); for (WifiConfiguration configuration : wifiConfigList) { String configId = configuration.SSID.replaceAll("\"", ""); if (configId.equals(ssid)) { networkId = configuration.networkId; break; } } if (networkId != -1) {//已经连接配置过 wifiManager.disconnect(); wifiManager.enableNetwork(networkId, true); } else {//新的连接 WifiConfiguration wifiConfig = createWifiInfo(ssid, "", wifiType); int netId = wifiManager.addNetwork(wifiConfig); if (netId != -1) { wifiManager.saveConfiguration(); } boolean flag = wifiManager.enableNetwork(netId, true); } } public WifiConfiguration createWifiInfo(String SSID, String password, int wifiType) { //清空config WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; //wifi名称 if (wifiType == 0) { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (wifiType == 1) { config.hiddenSSID = false; config.wepKeys[0] = "\"" + password + "\"";//密码 config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.status = WifiConfiguration.Status.ENABLED; } if (wifiType == 2) { config.hiddenSSID = false; config.preSharedKey = "\"" + password + "\""; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.NONE); config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2 config.status = WifiConfiguration.Status.ENABLED; } return config; } }