我使用WifiManager來測試特定SSID的存在並驗證給定的WPA密碼,但是我得到了一個奇怪的結果。Android WifiManager製作幻影連接?
的代碼看起來是這樣的:
WifiConfiguration wc = new WifiConfiguration();
// init ssid and password as Strings ...
wc.SSID = "\"" + ssid + "\"";
wc2.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);
boolean b = wifi.enableNetwork(res, true);
怪異的是,enableNetwork()返回true,即使無線網絡SSID不在線(?!)。但請注意,如果目標Wifi網絡存在並且密碼正確,則代碼會成功進行連接。
Android文檔說enableNetwork()「如果操作成功返回true」。我的問題是:
1)如果網絡沒有連接,網絡如何啓用?
2)我是否已經錯誤地初始化了WifiConfiguration參數wc?
3)這是測試與Wifi網絡連接的正確方法嗎?