Hello I’m trying to create an access point from my app. I can stand up the AP but not with the configuration that I set. I am using an htc Sensation XE
WifiManager wifiManager = (WifiManager) rc.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(false);
}
Method[] wmMethods = wifiManager.getClass().getDeclaredMethods();
boolean methodFound=false;
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "MyWifiAP";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled")){
methodFound=true;
try {
boolean apstatus=(Boolean) method.invoke(wifiManager, netConfig,true);
for (Method isWifiApEnabledmethod: wmMethods){
if(isWifiApEnabledmethod.getName().equals("isWifiApEnabled")){
while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){
};
for(Method method1: wmMethods){
if(method1.getName().equals("getWifiApState")){
int apstate;
apstate=(Integer)method1.invoke(wifiManager);
for(Method method2: wmMethods){
if(method2.getName().equals("getWifiApConfiguration")){
try {
netConfig=(WifiConfiguration)method2.invoke(wifiManager);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.e("CLIENT", "\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n");
if (apstate==0) {
Log.d("basura", "apstate es: "+apstate);
}
}
}
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
When I print:
Log.e(“CLIENT”, “\nSSID:”+netConfig.SSID+”\nPassword:”+netConfig.preSharedKey+”\n”);
I get:
nSSID:null
nPassword:null
I have the same problem with my HTC Desire and Android 2.2.2. It seems that many(or all) HTC devices can’t be configured this way. HTC has probably rewrote some of the code and restrict some of the hidden features. You are using methods, which are not offically in the API (eg setWifiApEnabled) through reflection. In my case the hotspot will be created, but with the default configuration. Probably you have the same issue. It will work for some other devices thought