烦人的wifi连接问题

时间:2015-03-22 03:54:57

标签: android android-wifi

我正在为IoT(物联网)项目设计一个应用程序,该应用程序需要各种SSID之间的无缝连接。

App在数据库中存储SSID-pwd对,当一个特定的IoT设备在wifi扫描列表中弹出时,它会自动连接到手机。

我已尝试使用以下代码从我的应用中连接到WiFi。

public boolean ConnectToNetworkWEP( String networkSSID, String password )
{
    try {
        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = "\"" + networkSSID + "\"";   // Please note the quotes. String should contain SSID in quotes
        conf.wepKeys[0] = password;  //WEP password is in hex, we do not need to surround it with quotes.
        conf.wepTxKeyIndex = 0;
        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
        conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

        WifiManager wifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        wifiManager.addNetwork(conf);

        List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
        for( WifiConfiguration i : list ) {
            if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
                wifiManager.disconnect();
                wifiManager.enableNetwork(i.networkId, true);
                wifiManager.reconnect();

                Toast.makeText(this, i.SSID, Toast.LENGTH_SHORT).show();
                break;
            }
        }

        //WiFi Connection success, return true
        return true;
    } catch (Exception ex) {
        System.out.println(Arrays.toString(ex.getStackTrace()));
        return false;
    }
}

但它无法可靠地连接到列出的SSID。它似乎取决于手机的本机连接,因为当我将SSID传递给没有密码的方法或提供无效密码时,它仍然连接到给出SSID的网络。 但是当我忘记所有网络时,它无法连接正确的密码。

仍然很疯狂,无论我为给定的SSID传递给WifiManager对象的配置如何,它都会连接到记住配置对象中未提供的电话记忆的SSID。

非常感谢任何帮助。

0 个答案:

没有答案
相关问题