设为首页 收藏本站
查看: 787|回复: 0

[经验分享] 连接WIFI的DEMO

[复制链接]

尚未签到

发表于 2015-10-1 09:12:21 | 显示全部楼层 |阅读模式
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 }
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121161-1-1.html 上篇帖子: IOS 如何获得 WIFI SSID 下篇帖子: 【IOS】获取wifi名称 (即SSID)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表