技术, Android

Android Wifi的设置、连接操作

我项目中这部分的代码是参考的这里的:http://blog.csdn.net/cscmaker/article/details/7032277

但是,参考了这段代码之后可没少忙活!怎么试都连不上,wifi的信息是创建了,可就是没法连接上。百思不得其解,后来我想,会不会是设置的地方出了问题。

原来是这样设置的:

config.preSharedKey = "\"" + Password + "\"";
config.hiddenSSID = true;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.status = WifiConfiguration.Status.ENABLED;

我是这样检测的,我自己手动连接好一个网络,然后获取这个连接,将下面的信息输出:

Log.i(TAG, "SSID:" + existingConfig.SSID);
Log.i(TAG, "preSharedKey:" + existingConfig.preSharedKey);
Log.i(TAG, "hiddenSSID:" + existingConfig.hiddenSSID);
Log.i(TAG, "allowedAuthAlgorithms:" + existingConfig.allowedAuthAlgorithms);
Log.i(TAG, "allowedGroupCiphers:" + existingConfig.allowedGroupCiphers);
Log.i(TAG, "allowedKeyManagement:" + existingConfig.allowedKeyManagement);
Log.i(TAG, "allowedPairwiseCiphers:" + existingConfig.allowedPairwiseCiphers);
Log.i(TAG, "allowedProtocols:" + existingConfig.allowedProtocols);
Log.i(TAG, "status:" + existingConfig.status);

这样,就可以对比,就知道怎样的是对的,哪里不对。

Log如下:

Created Wifi Info
SSID:"HADB-ASUS"
preSharedKey:*
hiddenSSID:false
allowedAuthAlgorithms:{}
allowedGroupCiphers:{0, 1, 2, 3}
allowedPairwiseCiphers:{1, 2}
allowedProtocols:{0, 1}
status:0
bRet=true

当然,除了preSharedKey输出的是被隐藏了的"*",因为安全性问题,密码是无法输出的,其它的项有的并不止一个值,后来看文档,发现,这些值其实都是有默认值的,根本不需要手动去设置它们,只需要将status设为WifiConfiguration.Status.ENABLED就可以了,密码也是要设一下的,其它的都可以注释掉。

于是,问题完美解决了……啊哈哈哈哈……

这次也给了我自己一个经验,那就是别人的代码也不能完全相信,还是要自己亲自实践才行。但参考代码这个步骤是必须的,因为它能带给你无数的灵感,还能指引你方向,因为有时候你根本不知道从何下手,参考一些代码之后,就会大体了解怎么去做,需要引用哪些包,然后在对这些包进行搜索,查看官方文档,很快,问题就可以迎刃而解了。

by 邓斌HADB of 好易思特HAOest
2012-7-23下午于成都

您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。