2010-01-26 290 views
17

在Android 1.5的(也1.6)如何以及如何设置到Android WifiConfiguration.preSharedKey连接到WPA2 PSK WiFi网络

如何添加从代码接入点?

给定支持WPA2的接入点。 这是我的代码片段。 44:13.550:如在logcat中出现

01-26 16

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiConfiguration wc = new WifiConfiguration(); 
// This is must be quoted according to the documentation 
// http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html#SSID 
wc.SSID = "\"SSIDName\""; 
wc.preSharedKey = "password"; 
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); 

此代码失败ERROR /的wpa_supplicant(2032):行0:无效PSK '密码'。

我确定这是密码,所有其他参数都是正确的。 我错过了什么?

回答

43

的原因我的悲哀就在这里in this Documentation issue

虽然documentation here状态

“预共享密钥,使用WPA-PSK使用。 当读取该键的值,实际密钥不会被返回,只有 “*”,如果该密钥有一个值,否则为空字符串。“

这是正确的,但很重要的是什么不说的是,这里有望在Linux 命令

wpa_passphrase <ssid> [passphrase] 

或接入点的密码双引号中的醚64字节的散列结果!

这样的情况下,该接入点的PSK是“榜样”它在Java 传递这样

WifiConfiguration myWiFiConfig = new WifiConfiguration(); 
... 
myWiFiConfig.preSharedKey = "\"example\""; 
... 

OR

myWiFiConfig.preSharedKey = "0a0b0f62170ecc5bcf721b6ff170b8b560101b5d56b00a26abec217e0bb4aa1f"; 

对于所有的休息你会发现这种方式是正确的:

复制&粘贴它是和保存自我的痛苦的一天半,我们已经度过了它(特别感谢Reflog

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiConfiguration wc = new WifiConfiguration(); 
wc.SSID = "\"SSIDName\""; 
wc.preSharedKey = "\"password\""; 
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); 
+1

嗨,我使用相同的代码来创建wifi配置并连接到新创建的wifi接入点。但是当我一旦连接到无线网络,然后重新启动设备后,我的wifi配置确实被android记住,你知道任何我们可以告诉Android的方式,他需要通过运行记住这个wifi配置。 – User7723337 2012-03-18 07:29:03

+0

我尝试了相同的代码,但没有被连接。当我看到WiFi设置时,我发现对于那个特定的访问点,状态显示为“用WPA/WPA2 PSK保护记录”。当我尝试手动补充然后它不要求密码,但不要连接。请帮忙 – png 2012-03-25 08:11:18

+1

@A_user添加到最后:'wifi.saveConfiguration();' – 2013-08-23 22:16:33

2

你将不得不为了增加波纹管行:

wifi.saveConfiguration(); 
3

谢谢,所有我可以用你的代码conncet我的wpa psk wifi。

WifiConfiguration wc = new WifiConfiguration(); 
    // This is must be quoted according to the documentation 
    // http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html#SSID 
    wc.SSID = "\"zpoint\""; 
    wc.preSharedKey = "\"[email protected]!\""; 
    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); 

早,我输入错误密码,但后来我正确的密码,然后它的工作。

相关问题