连接WIFI的DEMO

 1 public class ConnectWifi {
 2     private WifiManager wifiManager;
 3 
 4     public ConnectWifi(Context context) {
 5         wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
 6     }
 7 
 8     public void connectWifiDHCP(String ssid, String pswd, int security) {
 9         WifiConfiguration mWifiConfig = getConfig(ssid, pswd, security);
10         int networkId = wifiManager.addNetwork(mWifiConfig);
11         wifiManager.enableNetwork(networkId, true);
12     }
13     public void connectWifiSTATIC() throws UnknownHostException {
14         //得到连接中的WifiConfiguration.
15         int wifiState = wifiManager.getWifiState();
16         WifiInfo connectionInfo = null;
17         WifiConfiguration connectionConfig = null;
18         if(wifiState== WifiManager.WIFI_STATE_ENABLED){
19             connectionInfo = wifiManager.getConnectionInfo();
20         }
21         List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();
22         for(WifiConfiguration config:configuredNetworks){
23             if(config.networkId==connectionInfo.getNetworkId()){
24                 connectionConfig = config;
25             }
26         }
27         Log.e("lvxingang", "connectionConfig.SSID = "+connectionConfig.SSID);
28         
29         wifiManager.disableNetwork(connectionInfo.getNetworkId());
30         
31         
32         
33         //设置已经连接的ip,sub,gateway,dns.
34         connectionConfig.ipAssignment = IpAssignment.STATIC;//设置静态
35         connectionConfig.preSharedKey = null;//设置加密方式.
36         //设置linkProperties
37         LinkProperties linkProperties = new LinkProperties();
38         InetAddress ip = InetAddress.getByName("192.168.1.104");
39         InetAddress gateway = InetAddress.getByName("192.168.1.1");
40         InetAddress dns = InetAddress.getByName("8.8.8.8");
41         
42         linkProperties.addLinkAddress(new LinkAddress(ip, 24));
43         linkProperties.addRoute(new RouteInfo(gateway));
44         linkProperties.addDns(dns);
45         connectionConfig.linkProperties = linkProperties;
46         int addNetwork = wifiManager.addNetwork(connectionConfig);
47         wifiManager.enableNetwork(addNetwork, true);
48         
49     }
50     
51     private WifiConfiguration getConfig(String ssid, String pswd, int security) {
52         WifiConfiguration config = new WifiConfiguration();
53         config.SSID = AccessPoint.convertToQuotedString(ssid);
54         config.hiddenSSID = true;
55         switch (security) {
56         case AccessPoint.SECURITY_NONE:
57             config.allowedKeyManagement.set(KeyMgmt.NONE);
58             break;
59         case AccessPoint.SECURITY_WEP:
60             config.allowedKeyManagement.set(KeyMgmt.NONE);
61             config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
62             config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
63             if (pswd != null && !pswd.equals("")) {
64                 int length = pswd.length();
65                 String password = pswd;
66                 // WEP-40, WEP-104, and 256-bit WEP (WEP-232?)
67                 if ((length == 10 || length == 26 || length == 58) && password.matches("[0-9A-Fa-f]*")) {
68                     config.wepKeys[0] = password;
69                 } else {
70                     config.wepKeys[0] = '"' + password + '"';
71                 }
72             }
73             break;
74         case AccessPoint.SECURITY_PSK:
75             // config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
76             config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
77             if (pswd != null && !pswd.equals("")) {
78                 String password = pswd;
79                 if (password.matches("[0-9A-Fa-f]{64}")) {
80                     config.preSharedKey = password;
81                 } else {
82                     config.preSharedKey = '"' + password + '"';
83                 }
84             }
85             break;
86         case AccessPoint.SECURITY_EAP:
87             config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
88             config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
89             break;
90         default:
91             return null;
92         }
93         config.proxySettings = ProxySettings.NONE;// 代理设置
94         config.priority = 2;
95         config.allowedProtocols.set(Protocol.WPA);
96         config.allowedProtocols.set(Protocol.RSN);
97         return config;
98     }
99 }
原文地址:https://www.cnblogs.com/olvo/p/2946290.html