手机连接指定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)设置即可。

你可能感兴趣的:(手机连接指定WiFi的实现)