通过程序来实现wifi的自动连接。

这两天对android的wifi功能研究了一下。下面共享出自己封装的WifiConnect类。(这里参考了ZXing开源项目中wifi模块)

首先,要了解android关于wifi的API.

如果你喜欢看English API,这是android关于wifi的API地址:

http://developer.android.com/reference/android/net/wifi/package-summary.html(配置Wifi,还需要设定权限,android中关于wifi的API文档中说明了要添加什么权限)

如果你一看英语就头疼,这里有关于wifi的api的中文解释

http://note.sdo.com/u/1500295617/n/prb71~jGAHfpnM0l000bgN

切入正题,这里贴出一个封装了的类(WifiConnect),在实例化WifiConnect对象时,需要传入一个WifiManager对象。WifiConnect类向外部提供一个Connect方法,参数是无线的SSID,password,还有加密类型。

/**  WifiConnect.java*  Author: cscmaker*/
package com.wifi.connect;import java.util.List;import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;public class WifiConnect {WifiManager wifiManager;//定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况public enum WifiCipherType{WIFICIPHER_WEP,WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID}//构造函数public WifiConnect(WifiManager wifiManager){this.wifiManager = wifiManager;}//打开wifi功能private boolean OpenWifi(){boolean bRet = true;if (!wifiManager.isWifiEnabled()){bRet = wifiManager.setWifiEnabled(true);  }return bRet;}//提供一个外部接口,传入要连接的无线网public boolean Connect(String SSID, String Password, WifiCipherType Type){if(!this.OpenWifi()){return false;}
//开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
//状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句while(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING ){try{//为了避免程序一直while循环,让它睡个100毫秒在检测……Thread.currentThread();Thread.sleep(100);}catch(InterruptedException ie){}}WifiConfiguration wifiConfig = this.CreateWifiInfo(SSID, Password, Type);//if(wifiConfig == null){return false;}WifiConfiguration tempConfig = this.IsExsits(SSID);if(tempConfig != null){wifiManager.removeNetwork(tempConfig.networkId);}int netID = wifiManager.addNetwork(wifiConfig);boolean bRet = wifiManager.enableNetwork(netID, false);  return bRet;}//查看以前是否也配置过这个网络private WifiConfiguration IsExsits(String SSID){List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();for (WifiConfiguration existingConfig : existingConfigs) {if (existingConfig.SSID.equals("\""+SSID+"\"")){return existingConfig;}}return null; }private WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type){WifiConfiguration config = new WifiConfiguration();  config.allowedAuthAlgorithms.clear();config.allowedGroupCiphers.clear();config.allowedKeyManagement.clear();config.allowedPairwiseCiphers.clear();config.allowedProtocols.clear();config.SSID = "\"" + SSID + "\"";  if(Type == WifiCipherType.WIFICIPHER_NOPASS){config.wepKeys[0] = "";config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);config.wepTxKeyIndex = 0;}if(Type == WifiCipherType.WIFICIPHER_WEP){config.preSharedKey = "\""+Password+"\""; config.hiddenSSID = true;  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;}if(Type == WifiCipherType.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.allowedProtocols.set(WifiConfiguration.Protocol.WPA);                     config.status = WifiConfiguration.Status.ENABLED;  }else{return null;}return config;}}

android Wifi自动连接相关推荐

  1. Android Wifi --自动连接指定SSID(各种加密方式均可)

    Android Wifi API参考网站这里写链接内容 1.开始先加入wifi权限 <uses-permission android:name="android.permission. ...

  2. Android Wi-Fi 自动连接至需要网页认证AP失败

    测试机打开Wi-Fi,连接至Test,关闭Wi-Fi再打开后不能自动重连至Test(其他open AP可以自动重连) 1 测试步骤 测试机打开Wi-Fi,连接至Test(为需要网页认证才能够使用的Wi ...

  3. Android 8.0/9.0 wifi 自动连接评分机制

    今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...

  4. Android下自动连接指定SSID的WIFI的简单实现

    一.关于WiFi模块的概述: 1.在Android developer的文档中WiFi模块的信息: 首先,登记广播的监听:其次,请求扫描wifi信号:最后获取扫描到的wifi信息. 2.在广播监听到结 ...

  5. Android 10自动连接WiFi问题 Android 10 断开WiFi问题

    说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化. 问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动 ...

  6. QT Android wifi自动重连开发

    QT Android wifi自动重连开发 配置安卓wifi操作权限 通过监听QNetworkConfigurationManager信号判断WiFi是否失去连接 Java代码 QT代码 小米平板连接 ...

  7. 二维码WIFI自动连接生成格式

    http://mgz9057.blog.163.com/blog/static/31237253201519104039137/ 二维码WIFI自动连接生成格式 WIFI:T:WPA;S:MM;P:1 ...

  8. Wifi自动连接评分机制

    今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...

  9. 鸿蒙系统不能自动连wifi,Hi3861_WiFi IoT工程:WiFi自动连接

    Hi3861_WiFi IoT工程:WiFi自动连接 这些天在研究软总线组件,因为要连接WiFi进行调试,如果按照官方文档的如下步骤进行操作,肯定不合适: 在社区上找到连志安老师的<Hi3861 ...

最新文章

  1. MySQL - 无索引行锁升级为表锁
  2. 2021算法竞赛入门班第八节课【数学】习题
  3. Linux删除整行命令
  4. Qt Creator加States
  5. 【Qt】undefined reference to `vtable for xxx’
  6. 通过ADO压缩数据库
  7. linux怎样自制库_如何制作自己的LINUX系统?
  8. Python3.5以上版本lxml导入etree报错Unresolved reference
  9. simulink显示多个数据_如何在 Simulink 中使用 PID Tuner 进行 PID 调参?
  10. 10 本大数据高分书籍,收好给头脑充充电吧~
  11. python第一周小测验_测验1: Python基本语法元素 (第1周)-程序题
  12. 如何在虚拟linux环境运行python_Python 虚拟环境 | Mac/Linux下如何避坑安装配置Virtualenv...
  13. 【java】CGLIB动态代理原理分析
  14. 让搜索显示中文的方法
  15. ConcurrentHashMap 底层原理,你真的理解了吗?
  16. c# 用SqlParameter实现多字段模糊查询
  17. 《MIT科技评论》“35位35岁以下科技创新青年”名单出炉!AI领域有5人入选 | 2020中国区...
  18. linux中进程unit是什么意思,Unit(linux)基础命令
  19. win7 c盘空间不足怎么扩大
  20. 非此即彼的逻辑错误_GMAT高分范文100篇(非此即彼逻辑错误)【圣才出品】

热门文章

  1. VC编译选项 /ML /MLd /MT /MTd /MD /MDd之间的区别
  2. iframe例子 (
  3. Revit建模:使用技巧【软件操作类】希望能帮大家提高效率(上)
  4. 洛谷 P1456 Monkey King 题解
  5. localbus总线
  6. accept 和 content-Type区别
  7. OSI七层——物理层介绍和安全
  8. 【Mysql】 update语句更新原理
  9. 国外的云服务器网站推荐哪一家(在国内可以直接上的那种)?
  10. E课网AHB-SRAMC