android 解決部分手機連接熱點wifi導致被切換,enablenetwork(netID, true)無效的問題

寫之前先簡單介紹下發現的問題:

 A手機創建熱點"mini",B手機在連接熱點之前,連接的SSID叫做"haha",這時使用enablenetwork(netID, true)方法,連接A創建的熱點"mini",一般出現的過程就是先斷開"haha",連接"mini"熱點,這個過程中,大部分的手機會成功連接上"mini",但是部分手機如OPPO R7 Plus就不能連接上"mini",這種型號的手機連接過程是先斷開"haha",連接"mini"熱點,但是最後連接的還是"haha",這是爲什麼呢?
    原來,wifiManager.enableNetwork(netID, true);這個方法只是執行 命令讓去連接"指定的SSID",就算返回true也不代表最終連接的wifi是指定的wiifi,這是爲什麼,是因爲我們Wifi斷開跟某個SSID連接的時候,系統讀取了一個優先級連接,判斷出一個要連接的SSID,而我們只想連接我們的SSID,這樣此時相當於有兩個線程同時在進行,一但我們的SSID先連接上,System的連接晚我們一步連接上,就會導致我們剛連接上的SSID,馬上就斷開了。          參考鏈接:http://www.bubuko.com/infodetail-1124873.html,受益良多

       期間還遇到一個問題就是連接無密熱點wifi的情況下wifiManager.addNetwork(wifiConfig)返回的netid爲-1,這種情況下直接做以下處理,所有目前能遇到的問題都在demo裏面處理了,遇到相同問題的童鞋可以下載看看

//            config.wepKeys[0] = "";   
              config.hiddenSSID = true;
              config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
//            config.wepTxKeyIndex = 0;

以下奉上解決辦法的demo的下載地址

http://download.csdn.net/detail/zs20082012/9718632

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章