WifiManagerを使用して特定のSSIDの存在をテストし、特定のWPAパスワードを確認していますが、奇妙な結果が得られています。
コードは次のようになります。
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);
奇妙な部分は、SSIDのあるwifiネットワークがオンライン(?!)でない場合でも、enableNetwork()がtrueを返すことです。ただし、ターゲットWifiネットワークが存在し、パスワードが正しい場合、コードは正常に接続を確立することに注意してください。
Androidのドキュメントには、enableNetwork()は「操作が成功した場合はtrueを返す」と記載されています。私の質問は次のとおりです。
1)ネットワークが存在しない場合、どのようにしてネットワークを有効にすることができますか?
2)WifiConfigurationパラメーターwcを誤って初期化しましたか?
3)これはWifiネットワークへの接続を確立/テストする正しい方法ですか?