当前位置: 首页 > 工具软件 > Wcf.js > 使用案例 >

H5 native.js 控制wifi

淳于健
2023-12-01

/**  * 此文件仅支持android  */ window.WIFI = function() {  this.init(); }

/**  * 初始化  */ WIFI.prototype.init = function() {  var Context = plus.android.importClass("android.content.Context");  plus.android.importClass("android.net.wifi.WifiManager");  plus.android.importClass("java.util.List");  plus.android.importClass("java.util.ArrayList");  plus.android.importClass("android.net.wifi.ScanResult");  plus.android.importClass("android.net.wifi.WifiInfo");  plus.android.importClass("java.util.BitSet");

 this.WifiConfiguration = plus.android.importClass("android.net.wifi.WifiConfiguration");  this.wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);

}

/**  * 获取wifi列表  */ WIFI.prototype.getAllList = function() {  return this.wifis = this.wifiManager.getScanResults(); }

/**  * 校验ssid 返回的是有此ssid的wifi个数  * @param {Object} ssid wifi名  */ WIFI.prototype.checkSsid = function(ssid) {  var list = this.wifiManager.getScanResults();  var len = list.size();  var num = 0;  for(var i = 0; i < len; i++) {   var tmp = list.get(i);

  if(tmp.plusGetAttribute('SSID') == ssid) {    console.log('checkSsid === ' + i + '>>' + tmp.plusGetAttribute('SSID'))    num++;   }  }  return num; }

/**  * 移除已经存在的ssid  * @param {Object} ssid wifi名  */ WIFI.prototype.removeExsits = function(ssid) {  var list = this.wifiManager.getConfiguredNetworks(); //获取到已经配置过的wifi列表  var len = list.size();  var wifiInfo = this.getNow();  var tSsid = '"' + ssid + '"';  for(var i = 0; i < len; i++) {   var tmp = list.get(i);   var tmpSsid = tmp.plusGetAttribute('SSID');   console.log('removeExsits===>' + tmpSsid);   if(tmpSsid == tSsid) {    console.log('removeExsits===>' + tmpSsid);    this.disConnect(wifiInfo.getNetworkId());    this.wifiManager.removeNetwork(tmp.plusGetAttribute('networkId'));   }  } }

/**  * 连接已有的wifi 会自动校验  * @param {Object} netWorkId wifi的id  */ WIFI.prototype.connectOld = function(netWorkId) {  var now = this.getNow();  if(now.getNetworkId() != netWorkId) { //当前连接的不是将要连接的   this.wifiManager.enableNetwork(netWorkId, true);  } }

/**  * 取消连接  * @param {Object} netWorkId wifi的id  */ WIFI.prototype.disConnect = function(netWorkId) {  var now = this.getNow();  if(now.getNetworkId() == netWorkId) { //当前连接的是需要取消的 则取消   this.wifiManager.disableNetwork(netWorkId);   this.wifiManager.disconnect();  } }

/**  * 获取当前连接的wifi  */ WIFI.prototype.getNow = function() {  return this.wifiManager.getConnectionInfo(); } /**  *  */ WIFI.prototype.getWifiState = function() {  return this.wifiManager.getWifiState(); }

/**  * 添加新的wifi并连接  * @param {Object} ssid wifi名  * @param {Object} pwd 密码  */ WIFI.prototype.connectNew = function(ssid, pwd) {  var WifiConfiguration = this.WifiConfiguration;  var wcf = new WifiConfiguration();

 wcf.plusGetAttribute('allowedAuthAlgorithms').set(WifiConfiguration.AuthAlgorithm.OPEN);  wcf.plusGetAttribute('allowedGroupCiphers').set(WifiConfiguration.GroupCipher.TKIP);  wcf.plusGetAttribute('allowedKeyManagement').set(WifiConfiguration.KeyMgmt.WPA_PSK);  wcf.plusGetAttribute('allowedPairwiseCiphers').set(WifiConfiguration.PairwiseCipher.TKIP);  wcf.plusGetAttribute('allowedGroupCiphers').set(WifiConfiguration.GroupCipher.CCMP);  wcf.plusGetAttribute('allowedPairwiseCiphers').set(WifiConfiguration.PairwiseCipher.CCMP);

 wcf.plusSetAttribute('status', WifiConfiguration.Status.ENABLED);  wcf.plusSetAttribute('SSID', '"' + ssid + '"');  wcf.plusSetAttribute('preSharedKey', '"' + pwd + '"');  wcf.plusSetAttribute('hiddenSSID', true);

 var wcgID = this.wifiManager.addNetwork(wcf);  var b = this.wifiManager.enableNetwork(wcgID, true); }

/**  * 改变连接的wifi  * @param {Object} index wifi列表的索引  */ WIFI.prototype.change = function(index) {  // 索引大于配置好的网络索引返回    if(index > this.wifis.size()) {   return;  }  // 连接配置好的指定ID的网络    this.wifiManager.enableNetwork(this.wifis.get(index).plusGetAttribute('networkId'), true); }

/**  * 获取wifi是否打开  */ WIFI.prototype.isWifiEnabled = function() {  return this.wifiManager.isWifiEnabled(); }

/**  * 打开wifi  */ WIFI.prototype.open = function() {  console.log('open函数已执行');  this.wifiManager.setWifiEnabled(true); }

/**  * 关闭wifi  */ WIFI.prototype.close = function() {  this.wifiManager.setWifiEnabled(false); }

/**  * 兼容版的wifi设置 只提供跳转wifi设置界面  */ window.C_WIFI = function() {  this.main = plus.android.runtimeMainActivity();  var Intent = plus.android.importClass("android.content.Intent");  var Settings = plus.android.importClass('android.provider.Settings');  this.wifiIntent = new Intent(Settings.ACTION_SETTINGS); } /**  * 跳转wifi界面  */ C_WIFI.prototype.goWifi = function() {  this.main.startActivity(this.wifiIntent); }

转载于:https://www.cnblogs.com/zdlblogs/p/7121502.html

 类似资料: