Bor*_*ich 19 java android wifi
在Android 1.5(也在1.6)
如何从代码中添加Access Point?
给定支持WPA2的接入点.这是我的代码片段.
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 );
Run Code Online (Sandbox Code Playgroud)
此代码失败,因为在LogCat中出现
01-26 16:44:13.550:ERROR/wpa_supplicant(2032):第0行:PSK'密码'无效.
我确信这是密码,所有其他参数都是正确的.我想念我怎么办?
Bor*_*ich 45
我的悲伤的原因在于本文档问题
虽然这里的文件说明
"与WPA-PSK一起使用的预共享密钥.当读取该密钥的值时,不返回实际密钥,如果密钥有值,则返回"*",否则返回空字符串.
这是正确的,但非常重要的是它没有说的是这里预期的linux命令的以太64字节哈希结果
wpa_passphrase <ssid> [passphrase]
Run Code Online (Sandbox Code Playgroud)
或Access Point的密码输入双引号!
因此,如果Access Point的PSK是"示例",它必须像这样在java中传递
WifiConfiguration myWiFiConfig = new WifiConfiguration();
...
myWiFiConfig.preSharedKey = "\"example\"";
...
Run Code Online (Sandbox Code Playgroud)
要么
myWiFiConfig.preSharedKey = "0a0b0f62170ecc5bcf721b6ff170b8b560101b5d56b00a26abec217e0bb4aa1f";
Run Code Online (Sandbox Code Playgroud)
对于所有其他人来说,正确的方法是偶然发现:
按原样复制并粘贴并保存您自己已经花费半天的痛苦(特别感谢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 );
Run Code Online (Sandbox Code Playgroud)
小智 5
谢谢?我所能将您的代码都使用到我的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 = "\"sipisP@ssw0rd!\"";
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 );
Run Code Online (Sandbox Code Playgroud)
较早时,我输入了错误密码,但后来我更正了密码,然后它可以工作。
| 归档时间: |
|
| 查看次数: |
42258 次 |
| 最近记录: |