在Android中连接到wifi

时间:2013-04-06 14:13:48

标签: android wifi android-wifi wifimanager access-point

我正在开发一个Android应用程序,它涉及在范围内连接到特定的wifi。一旦我完成了一些事情,我试图连接到我原来的wifi。由于一些奇怪的原因,它连接到我原来的wifi,因为我想要它,但大约30秒后,它会断开连接。当我检查设备上的wifi设置时,它显示wifi已禁用。

总结:
1.连接到Wifi W1。
2.当Wifi W2在范围内时,连接到它(使用SSID)但是,请记住W1的SSID以便以后使用。
3.断开W2并在wificonfiguration列表中查找W1(使用SSID)。找到后,连接到那个。

所有这三个步骤都有效,但由于某种原因,在步骤3成功后不久(<1分钟),设备将丢弃并禁用与W1的连接。这只发生在我通过代码更改wifi连接时。这是我的代码的样子: 'net'变量包含原始wifi连接的SSID(W1)的SSID值。有没有人知道为什么我会在重新连接到原始Wifi后立即断开连接?

if(net!=""){
    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
    for( WifiConfiguration i : list ) {
        if(i.SSID != null && i.SSID.contains(net)) {            
             wifiManager.disconnect();                          

             wifiManager.enableNetwork(i.networkId, true);

             wifiManager.setWifiEnabled(true);                  
             break;
        }           
     }
    }

1 个答案:

答案 0 :(得分:1)

我有一个建议,我不确定这是否会解决问题但是值得尝试

如果您放置

,请在下面的代码中

if(net!=""){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.contains(net)) {            
         wifiManager.disconnect();      

         //place a sleep on thread so that the underlying hardware gets some time to disconnect
        Thread.sleep(10000);
        //Now trying connecting to the previous network. Also try increasing the time to wait if 5 seconds is not working.   

         wifiManager.enableNetwork(i.networkId, true);

         wifiManager.setWifiEnabled(true);                  
         break;
    }           
 }
}

修改

它似乎适用于超过10秒的间隔。这个时间间隔我认为取决于设备的WiFi芯片组,它需要一些时间来断开与当前网络的连接并连接到其他网络。此外,如果该设备具有低质量的芯片组,那么它可能需要更长的时间而且我认为如果该设备具有高质量的芯片组,那么它将更快..