In Android 1.5 (also on 1.6)
How to add an Access Point from code?
Given Access point that supports WPA2.
Here is my code snippet.
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 );
This code fails as in LogCat appear
01-26 16:44:13.550: ERROR/wpa_supplicant(2032): Line 0: Invalid PSK ‘password’.
I am sure that this is the password and that all of the rest of the parameters are right.
What do I do I miss?
The reason for the my sorrow is here in this Documentation issue
While documentation here states
It is correct, but very important what it does not say is that expected here ether 64 byte hash result of the linux
command
or Access Point’s password IN DOUBLE QUOTES!
So in case that Access Point’s PSK is “example” it has to be passed in java
like this
OR
For all the rest of you that will stumble on this the right way is:
Copy&Paste it as is and save your self half a day of pain we already spent on it (Special Thanks to Reflog)