android 解决部分手机连接热点wifi导致被切换,enablenetwork(netID, true)无效的问题

来源:互联网 发布:淘宝店怎么提升销量 编辑:程序博客网 时间:2024/05/01 10:40

写之前先简单介绍下发现的问题:

 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

0 0