android怎样连接指定wifi,手机连接指定WiFi的实现
最近在项目上有个需求,要实现检测当前的wifi是否为我们想要连接的wifi,如果不是,则通过程序控制断掉当前的wifi,连接上我们所需要的wifi。在网上查阅了很多的资料,有很多大神也分享了实现的方法,借鉴大神们的经验将我自己的理解分享出来。在没有看懂手机wifi设置的原理以前,以为手机上打开Wifi开关并且连接到指定的wifi,以为是系统定制的,我们是不能去模仿且改变的,查资料后才知道,手机上的
最近在项目上有个需求,要实现检测当前的wifi是否为我们想要连接的wifi,如果不是,则通过程序控制断掉当前的wifi,连接上我们所需要的wifi。在网上查阅了很多的资料,有很多大神也分享了实现的方法,借鉴大神们的经验将我自己的理解分享出来。
在没有看懂手机wifi设置的原理以前,以为手机上打开Wifi开关并且连接到指定的wifi,以为是系统定制的,我们是不能去模仿且改变的,查资料后才知道,手机上的wifi开关且设置网络都是调用了API去实现的,既然API的开源的,那我们也可以去调用API实现我们想要的结果。
当我们检测WiFi状态对应结果如下:
WIFI_STATE_DISABLED 0 正在关闭
WIFI_STATE_DISABLED 1 已经关闭
WIFI_STATE_ENABLING 2 正在打开
WIFI_STATE_ENABLED 3 已经打开
WIFI_STATE_UNKNOWN 4 未知
以下的这个WifiManagerUtils是我参考大神们的讲解封装的一个类。以下只是部分代码,完整的请查看分享链接链接: 链接: https://pan.baidu.com/s/1boPrbfL 密码: wagu
下面是我使用WifiManageUtils连接一个特定的wifi案列
实现的思路是:
(1)先获取当前wifi状态,如果关闭,则调用openWifiEnabled()打开wifi。
(2)当wifi状态为3(WIFI_STATE_ENABLED)时,通过getNetWorkId()返回值判断当前是否有wifi连接,如果判断是否为我们要设置的目标WIFI,如果不是则通过disconnectWifi断掉当前连接的WiFi;如果getNetWorkId()返回值返回值为null,则表示当前没有WiFi连接,则通过getScanResult()获取周围所有的wifi,并且查找是否有我们所要连接的目标Wifi。
(3)找到目标WiFi后,通过addNetWork(managerUtils.createWifiInfo(ssid,psw,3))设置目标wifi。
想要设置wifi只需要在调用的地方通过setSpecificWifi(WifiManagerUtils wifiManagerUtils, String ssid,String psw)设置即可。
更多推荐
所有评论(0)