【问题标题】:Connect to Open WiFi连接到打开的 WiFi
【发布时间】:2012-10-08 21:32:47
【问题描述】:

我使用下面的代码连接到加密网络。但是,如果网络不安全并且我将密钥留空(“”),那么它就会失败。有谁知道如何解决这个问题?此外,是否可以使用 ssid / bssid 检测网络是否打开?还是我必须使用过滤器进行扫描?

public void connectToSSID(final String ssid, final String key) {
    Log.i("wifimaster", "connection to "+ssid);

    WifiConfiguration wc = new WifiConfiguration();
    wc.SSID = "\""+ssid+"\""; //IMPORTANT! This should be in Quotes!!  
    wc.priority = 40;
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
    wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
    wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
    wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

    wc.preSharedKey = "\""+key+"\"";
    wc.wepKeys[0] = "\""+key+"\""; //This is the WEP Password
    wc.wepTxKeyIndex = 0;

    wc.preSharedKey = "\""+key+"\"";

    int res = wifiManager.addNetwork(wc);
    Log.d("WifiPreference", "add Network returned " + res );
    boolean es = wifiManager.saveConfiguration();
    Log.d("WifiPreference", "saveConfiguration returned " + es );
    boolean b = wifiManager.enableNetwork(res, true);   
    Log.d("WifiPreference", "enableNetwork returned " + b );

    if(b)
        Toast.makeText(c, c.getString(R.string.connected), Toast.LENGTH_SHORT).show();
    else
        Toast.makeText(c, c.getString(R.string.unconnected), Toast.LENGTH_SHORT).show();
}

【问题讨论】:

    标签: android encryption wifi


    【解决方案1】:

    使用

    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    

    只有它会起作用。

    删除所有其他分配给wc,没有必要将它们用于连接到网络的简单任务。您不是 creating 网络,您正在连接到 existing 网络。

    如需完整解决方案,请查看此链接:How do I connect to a specific Wi-Fi network in Android programmatically? 它有你需要知道的一切。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多