所以我已经在这里搜索了所有线程,以及谷歌带我去的任何地方。但是我仍然无法连接到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 +”\“”;结果相同。
非常欢迎任何提示。 最好的祝福 拉塞
答案 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);`