Java 无法连接到WPA2 android
我正在使用以下代码连接android中的WPA2(我可以连接WEP和WPA)。但我只得到“扫描”状态。我无法连接WPA2网络。你能告诉我我需要做些什么改变才能使这个代码与wpa2 WiFi相关吗Java 无法连接到WPA2 android,java,android,wifi,Java,Android,Wifi,我正在使用以下代码连接android中的WPA2(我可以连接WEP和WPA)。但我只得到“扫描”状态。我无法连接WPA2网络。你能告诉我我需要做些什么改变才能使这个代码与wpa2 WiFi相关吗 private boolean saveWepConfigAndEnableNetwork(String ssid, String pass) { isAlreadyPresend = false; WifiConfiguration wc = new WifiConfiguration
private boolean saveWepConfigAndEnableNetwork(String ssid, String pass) {
isAlreadyPresend = false;
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"" + ssid + "\""; // IMP! This should be in Quotes!!
wc = checkPreviousConfiguration(wc);
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.DISABLED;
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.preSharedKey = "\"" + pass + "\"";
wc.wepKeys[0] = "\"" + pass + "\""; // This is the WEP Password
wc.wepTxKeyIndex = 0;
boolean res1 = wifi.setWifiEnabled(true);
int res = 0;
if(isAlreadyPresend){
res = wifi.addNetwork(wc);
}else{
res = wifi.updateNetwork(wc);
}
Log.d("WifiPreference", "add Network returned " + res);
boolean es = wifi.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es);
boolean b = wifi.enableNetwork(res, true);
Log.d("WifiPreference", "enableNetwork returned " + b);
return b;
}
// Check if this SSID is already stored. If it is, return that
// configuration.
// If not, return the configuration being tested.
public WifiConfiguration checkPreviousConfiguration(WifiConfiguration wc) {
List<WifiConfiguration> configs = wifi.getConfiguredNetworks();
for (WifiConfiguration config : configs) {
if (config.SSID.equals(wc.SSID)){
isAlreadyPresend = true;
return config;
}
}
return wc;
}
private boolean saveWepConfigAndEnableNetwork(字符串ssid,字符串pass){
isAlreadyPresend=假;
WifiConfiguration wc=新的WifiConfiguration();
wc.SSID=“\”“+SSID+”\”“;//IMP!应该用引号括起来!!
wc=检查先前的配置(wc);
wc.hiddenSSID=true;
wc.status=WifiConfiguration.status.DISABLED;
wc.priority=40;
wc.allowedKeyManagement.set(WifiConfiguration.keymanagement.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.allowedPairwisecipher.set(WifiConfiguration.Pairwiseciper.CCMP);
wc.allowedPairwisecipher.set(WifiConfiguration.Pairwiseciper.TKIP);
AlloweGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
AlloweGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wc.preSharedKey=“\”+通过+“\”;
wc.wepKeys[0]=“\”“+pass+”\”“;//这是WEP密码
wc.wepTxKeyIndex=0;
布尔值res1=wifi.setWifiEnabled(真);
int res=0;
如果(isAlreadyPresend){
res=wifi.addNetwork(wc);
}否则{
res=wifi.updateNetwork(wc);
}
Log.d(“WifiPreference”,“添加返回的网络”+res);
布尔es=wifi.saveConfiguration();
Log.d(“WifiPreference”、“saveConfiguration returned”+es);
布尔b=wifi.enableNetwork(res,true);
Log.d(“WifiPreference”、“enableNetwork returned”+b);
返回b;
}
//检查此SSID是否已存储。如果是,请将其退回
//配置。
//如果没有,返回正在测试的配置。
公共无线配置检查先前配置(无线配置wc){
List configs=wifi.getConfiguredNetworks();
用于(WifiConfiguration config:configs){
if(config.SSID.equals(wc.SSID)){
isAlreadyPresend=真;
返回配置;
}
}
返回wc;
}
以下是我用来连接WPA2的代码
// Adding a WPA or WPA2 network
public static void changeNetworkWPA(WifiManager wifiManager, String ssid, String password) {
WifiConfiguration config = changeNetworkCommon(ssid);
// Hex passwords that are 64 bits long are not to be quoted.
config.preSharedKey = quoteNonHex(password, 64);
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA
config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
updateNetwork(wifiManager, config);
}
代码:From代码取自:com.google.zxing.client.android.wifi.WifiConfigManager.java