1 public class WifiConnect {
2
3 WifiManager wifiManager;
4
5 // 构造函数
6 public WifiConnect(WifiManager wifiManager) {
7 this.wifiManager = wifiManager;
8 }
9
10 // 提供一个外部接口,传入要连接的无线网
11 public boolean Connect(String SSID, String Password, int Type) {
12
13 WifiConfiguration wifiConfig = this
14 .CreateWifiInfo(SSID, Password, Type);
15
16 WifiConfiguration tempConfig = this.IsExsits(SSID);
17 if (tempConfig != null) {
18 wifiManager.removeNetwork(tempConfig.networkId);
19 }
20
21 int netID = wifiManager.addNetwork(wifiConfig);
22 boolean flag = wifiManager.enableNetwork(netID, true);
23 return flag;
24 }
25
26 // 查看以前是否也配置过这个网络
27 private WifiConfiguration IsExsits(String SSID) {
28 List<WifiConfiguration> existingConfigs = wifiManager
29 .getConfiguredNetworks();
30 for (WifiConfiguration existingConfig : existingConfigs) {
31 if (existingConfig.SSID.equals(""" + SSID + """)) {
32 return existingConfig;
33 }
34 }
35 return null;
36 }
37
38 // 配置WifiConfiguration
39 public WifiConfiguration CreateWifiInfo(String SSID, String Password,
40 int Type) {
41 WifiConfiguration config = new WifiConfiguration();
42 config.allowedAuthAlgorithms.clear();
43 config.allowedGroupCiphers.clear();
44 config.allowedKeyManagement.clear();
45 config.allowedPairwiseCiphers.clear();
46 config.allowedProtocols.clear();
47 config.SSID = """ + SSID + """;
48
49 WifiConfiguration tempConfig = this.IsExsits(SSID);
50 if (tempConfig != null) {
51 wifiManager.removeNetwork(tempConfig.networkId);
52 }
53
54 if (Type == 1) // WIFICIPHER_NOPASS
55 {
56 config.wepKeys[0] = "";
57 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
58 config.wepTxKeyIndex = 0;
59 }
60 if (Type == 2) // WIFICIPHER_WEP
61 {
62 config.hiddenSSID = true;
63 config.wepKeys[0] = """ + Password + """;
64 config.allowedAuthAlgorithms
65 .set(WifiConfiguration.AuthAlgorithm.SHARED);
66 config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
67 config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
68 config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
69 config.allowedGroupCiphers
70 .set(WifiConfiguration.GroupCipher.WEP104);
71 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
72 config.wepTxKeyIndex = 0;
73 }
74 if (Type == 3) // WIFICIPHER_WPA
75 {
76 config.preSharedKey = """ + Password + """;
77 config.hiddenSSID = true;
78 config.allowedAuthAlgorithms
79 .set(WifiConfiguration.AuthAlgorithm.OPEN);
80 config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
81 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
82 config.allowedPairwiseCiphers
83 .set(WifiConfiguration.PairwiseCipher.TKIP);
84 // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
85 config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
86 config.allowedPairwiseCiphers
87 .set(WifiConfiguration.PairwiseCipher.CCMP);
88 config.status = WifiConfiguration.Status.ENABLED;
89 }
90 return config;
91 }
92
93 }