zdlllll
zdlllll
  • 发布:2017-07-26 14:43
  • 更新:2020-12-07 14:52
  • 阅读:4784

控制wifi

分类:Native.js

/*
仅支持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);
    }
5 关注 分享
Reinhardt 7***@qq.com 1***@qq.com q***@163.com f***@qq.com

要回复文章请先登录注册

胖胖本不胖

胖胖本不胖

为什么我在安卓平台运行的app,没有window对象呢?更不会从原型链中找那些函数
2020-12-07 14:52
123X

123X

回复 y***@vip.qq.com :
怎么授权啊
2020-05-27 14:53
y***@vip.qq.com

y***@vip.qq.com

回复 y***@vip.qq.com :
可以了,需要授权才能拿到
2020-04-08 11:23
y***@vip.qq.com

y***@vip.qq.com

我这边返回的是java.util.ArrayList这种,咋办
2020-04-08 10:51
2***@qq.com

2***@qq.com

你好 可以设置wifi代理嘛
2020-04-02 15:48
2***@qq.com

2***@qq.com

错了,是 cannot set "WIFI"
2019-02-14 14:33
zdlllll

zdlllll (作者)

回复 2***@qq.com :
我代码中没有courseName这个
2019-02-14 14:16
2***@qq.com

2***@qq.com

Cannot read property 'courseName' of undefined; 报错什么原因 望解答
2019-02-13 18:42
t***@qq.com

t***@qq.com

看到有2个人留言说可以用了,还没有测试我都很高兴了
2018-11-23 15:04
7***@qq.com

7***@qq.com

测试可用哦,谢谢分享,赞一个
2017-08-27 13:24