手機連接指定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)設置即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容