android - 在 Android 中连接到 wifi

标签 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 的连接并在 wifi 配置列表中查找 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;
        }           
     }
    }

最佳答案

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

在下面的代码中,如果你放置

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 芯片组,它需要一些时间来断开当前网络并连接到其他网络。此外,如果设备的芯片组质量较低,则可能需要更长的时间。此外,我认为如果设备的芯片组质量较高,则速度会快得多。

关于android - 在 Android 中连接到 wifi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851962/

相关文章:

android - 如何在 Delphi 中以编程方式在 android 设备上启用 wi-fi?

android - 我可以在 Android 上同时打开 Wi-Fi 和蜂窝网络接口(interface)吗?

Android 安全异常 : Admin does not own the profile

android - 如何将 openssl RSA key 转换为 Android 引导加载程序 RSA key 格式?

android - 使用蓝牙/wi-fi direct/BLE api 或任何其他方式将 ios 设备与 android 设备通信

c++ - 在 Compact 7 中使用 wlantool.exe 连接到 wifi 网络失败,错误代码为 1814

java - 我可以在没有对话框的情况下卸载应用程序吗?

android - 升级到 Gingerbread 后无法将软键盘输入更改为 "done"按钮

android - WifiP2pManager createGroup 和 removeGroup 失败并显示 BUSY 状态

java - 如何使用 Android 2.36 (Gingerbread) 开发/编码 WIFI Direct?