Android使用wifimanager连接到WPA-PSK安全网络

时间:2012-03-15 18:25:01

标签: android wifi wifimanager wpa

所以我已经在这里搜索了所有线程,以及谷歌带我去的任何地方。但是我仍然无法连接到WPA PSK网络。 这是我的代码,我有2个edittext字段,我从中读取SSID和PSK,然后选中一个复选框以选择是否隐藏SSID。

    EditText mSSID = (EditText) findViewById(R.id.wifiTVssidcurrent);
    String networkSSID = mSSID.getText().toString();
    EditText mWPA = (EditText) findViewById(R.id.wifiTVwpacurrent);
    String networkWPA = mWPA.getText().toString();

    // Update text to show that connection is pending
    TextView wifiStatus = (TextView) findViewById(R.id.wifiTVconnectionstatus);
    wifiStatus.setText("Connecting to " + networkSSID);

    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "\"".concat(networkSSID).concat("\""); 
    wc.preSharedKey  = "\"".concat(networkWPA).concat("\"");

    CheckBox mSSIDHidden = (CheckBox) findViewById(R.id.wifiCBhiddenssid);
    wc.hiddenSSID = false;
    if (mSSIDHidden.isChecked()) {
        wc.hiddenSSID = true;
    }
    wc.status = WifiConfiguration.Status.ENABLED;         
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
    int res = wifi.addNetwork(wc); 
    Log.d("WifiPreference", "add Network returned " + res ); 
    boolean b = wifi.enableNetwork(res, true);         
    Log.d("WifiPreference", "enableNetwork returned " + b );
    boolean c = wifi.reconnect();
    Log.d("WifiPreference", "reconnect returned " + c );

在运行此功能后,我在手机中看到的是AP是在设置中创建的,但它没有连接。如果我尝试从设置中手动使用创建的AP后,我也无法连接。 但是如果我在设置中创建AP,我就会得到连接。

至于放入SSID和WPA PSK,我已经尝试了两个“\”“。​​concat(networkSSID).concat(”\“”);和“\”“+ networkSSID +”\“”;结果相同。

非常欢迎任何提示。 最好的祝福 拉塞

1 个答案:

答案 0 :(得分:4)

再次非常感谢Ryan提出如何阅读操作系统创建的设置。

所以我以为我已经尝试了堆叠溢出的所有建议。 但是这个帖子实际上帮助了我Setup wifi programatically using WPA Security in android tablet非常感谢RYAN提供阅读一个AP然后模仿它的提示。在我的情况下,事实证明我需要添加尽管我正在为WPA设置我仍然需要添加allowedGroupCiphers WEP40和WEP104而我只有

`wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); //So I also added 
 wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);`