Android: How to change the Mobile hotspot broadcast channel by programmatically? -
i tried change mobile hotsport broadcast channel in android programmatically using following code not changing value/channel.
note: able change ssid , password programmatically.
tried set channel 11, still not working...
thanks in advance
my code is
public void hotspotchannelwrite() { wifimanager wifimanager = (wifimanager)getsystemservice(wifi_service); if(wifimanager.iswifienabled()) { wifimanager.setwifienabled(false); } netconfig = new wificonfiguration(); netconfig.ssid = "tipturinfo"; netconfig.presharedkey = "sharath"; netconfig.allowedauthalgorithms.set(wificonfiguration.authalgorithm.open); netconfig.allowedprotocols.set(wificonfiguration.protocol.rsn); netconfig.allowedprotocols.set(wificonfiguration.protocol.wpa); netconfig.allowedkeymanagement.set(wificonfiguration.keymgmt.wpa_psk); netconfig.allowedgroupciphers.set(wificonfiguration.groupcipher.tkip); netconfig.allowedgroupciphers.set(wificonfiguration.groupcipher.ccmp); netconfig.allowedpairwiseciphers.set(wificonfiguration.pairwisecipher.tkip); netconfig.allowedpairwiseciphers.set(wificonfiguration.pairwisecipher.ccmp); try { method setwifiapmethod = wifimanager.getclass().getmethod("setwifiapenabled", wificonfiguration.class, boolean.class); boolean apstatus=(boolean) setwifiapmethod.invoke(wifimanager, netconfig,true); method iswifiapenabledmethod = wifimanager.getclass().getmethod("iswifiapenabled"); while(!(boolean)iswifiapenabledmethod.invoke(wifimanager)){}; method getwifiapstatemethod = wifimanager.getclass().getmethod("getwifiapstate"); int apstate=(integer)getwifiapstatemethod.invoke(wifimanager); method getwifiapconfigurationmethod = wifimanager.getclass().getmethod("getwifiapconfiguration"); netconfig=(wificonfiguration)getwifiapconfigurationmethod.invoke(wifimanager); log.i("writing hotspotdata", "\nssid:"+netconfig.ssid+"\npassword:"+netconfig.presharedkey+"\n"); // channel change field wcadhocfreq = wificonfiguration.class.getfield("frequency"); int freq = 2462; // default channel 11 wcadhocfreq.setint(netconfig, freq); log.i("hotspotdata channel", "\n frequence:"+freq ); log.i("hotspotdata channel", "\n frequence:"+wcadhocfreq ); // saving data wifimanager.saveconfiguration(); } catch (illegalformatexception ife) { ife.printstacktrace(); } catch (exception e) { e.printstacktrace(); } wifimanager.saveconfiguration(); }
i tried alternative way well:
field wcfreq = wificonfiguration.class.getfield("channel"); wcfreq.setint(netconfig,11);
try this, works android 7.0
method getwifiapconfigurationmethod = wifimanager.getclass().getmethod("getwifiapconfiguration"); netconfig=(wificonfiguration)getwifiapconfigurationmethod.invoke(wifimanager); //log.i("writing hotspotdata", "\nssid:" + netconfig.ssid + "\npassword:" + netconfig.presharedkey + "\n"); field wcband = wificonfiguration.class.getfield("apband"); int vb = wcband.getint(netconfig); log.i("band was", "val=" + vb); wcband.setint(netconfig, 2); // 2ghz // channel change field wcfreq = wificonfiguration.class.getfield("apchannel"); int val = wcfreq.getint(netconfig); log.i("config was", "val=" + val); wcfreq.setint(netconfig,11); // channel 11 method setwifiapconfigurationmethod = wifimanager.getclass().getmethod("setwifiapconfiguration", wificonfiguration.class); setwifiapconfigurationmethod.invoke(wifimanager, netconfig); // saving data wifimanager.saveconfiguration();
Comments
Post a Comment