原文地址:https://blog.csdn.net/baidu_37401437/article/details/54694949 //更新或创建WifiConfiguration
public static WifiConfiguration configWifiInfo(Context context, String SSID, String password, int type) { WifiConfiguration config = null; WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (mWifiManager != null) { List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig == null) continue; if (existingConfig.SSID.equals("\"" + SSID + "\"") /*&& existingConfig.preSharedKey.equals("\"" + password + "\"")*/) { config = existingConfig; break; } } } if (config == null) { config = new WifiConfiguration(); } config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; // 分为三种情况:0没有密码1用wep加密2用wpa加密 if (type == 0) {// WIFICIPHER_NOPASSwifiCong.hiddenSSID = false; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); } else if (type == 1) { // WIFICIPHER_WEP config.hiddenSSID = true; config.wepKeys[0] = "\"" + password + "\""; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.SHARED); 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.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } else if (type == 2) { // WIFICIPHER_WPA config.preSharedKey = "\"" + password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; } /** *获取热点的加密类型 */ private int getType(ScanResult scanResult){
if (scanResult.capabilities.contains("WPA")) type = 2; else if (scanResult.capabilities.contains("WEP")) type = 1; else type = 0;
}
//连接到指定wifi时
WifiConfiguration configuration = XlinkUtils.configWifiInfo(context, "SSID", "password", type); int netId = configuration.networkId; if (netId == -1) { netId = wifiManager.addNetwork(configuration); } wifiManager.enableNetwork(netId, true);