cuiqian2004
8 天以前 30311cd24ee3b1567ffafac002494bb67feda657
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
export default {
    data() {
        return {
            // 默认的全局分享内容
            wifiManager: null,
            wifiManager: null,
            arrayList: null,
        }
    },
    initWifi() {
        const MainActivity = plus.android.runtimeMainActivity();
        const Context = plus.android.importClass("android.content.Context");
        this.arrayList = plus.android.importClass("java.util.ArrayList");
        plus.android.importClass("android.net.wifi.WifiManager");
        plus.android.importClass("android.net.wifi.WifiInfo");
        plus.android.importClass("android.net.wifi.ScanResult");
        this.WifiConfiguration = plus.android.importClass("android.net.wifi.WifiConfiguration");
        this.wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);
 
    },
 
    openWifiSetting() {
        let main = plus.android.runtimeMainActivity();
        let Intent = plus.android.importClass("android.content.Intent");
        let intent = new Intent();
        intent.setAction("android.settings.WIFI_SETTINGS"); // 指定action为跳转到WLAN设置界面
        main.startActivity(intent);
    },
    getConnectionWifi() {
        const wifiInfo = this.wifiManager.getConnectionInfo()
        let ssid = wifiInfo.getSSID(); // 获取SSID
        let mac = wifiInfo.getBSSID(); // 获取mac地址
        let ipAddress = wifiInfo.getIpAddress();
        let ip =
            `${(ipAddress & 0xff)}.${(ipAddress >> 8 & 0xff)}.${(ipAddress >> 16 & 0xff)}.${(ipAddress >> 24 & 0xff)}`
        console.log(ssid, ip, mac)
        return {
            ssid,
            ip,
            mac
        }
    },
    getWifiList() {
        const resultList = this.wifiManager.getScanResults();
        const len = resultList.size();
        this.wifiList = [];
        for (let i = 0; i < len; i++) {
            const oneWiFi = {
                sid: resultList.get(i).plusGetAttribute('SSID'),
                bssid: resultList.get(i).plusGetAttribute('BSSID'),
            };
            this.wifiList.push(oneWiFi);
        }
        console.log(this.wifiList);
    },
    // 连接 WiFi
    connectWifi(SSID, pwd) {
 
        // 获取当前连接的WiFi信息
        // console.log("connectWifi", plus);
        // plus.wifi.connect({
        //     SSID: SSID,
        //     password: pwd
        // }, function() {
        //     console.log('连接成功');
        //     uni.showToast({
        //         title: '连接成功',
        //         icon: 'success'
        //     });
        // }, function(e) {
        //     console.log('连接失败:', e);
        //     uni.showToast({
        //         title: '连接失败',
        //         icon: 'none'
        //     });
        // });
        // return
        let BSSID = ""
        console.log("connectWifi", SSID, BSSID, pwd);
        const wifiConfig = this.createWifiConfig(SSID, pwd, 'wpa', BSSID);
        if (wifiConfig == null) {
            console.log("wifiConfig is null!");
            return;
        }
        console.log("createWifiConfig");
        const tempConfig = this.isExsitsAndroid(SSID);
        console.log("isExsitsAndroid");
        if (tempConfig != null) {
            this.wifiManager.removeNetwork(tempConfig.networkId);
        }
        console.log("addNetwork");
        const netID = this.wifiManager.addNetwork(wifiConfig);
        const enabled = this.wifiManager.enableNetwork(netID, true);
        console.log("enableNetwork status enable=" + enabled);
        const connected = this.wifiManager.reconnect();
        console.log("enableNetwork connected=" + connected);
    },
    // 创建新的 WiFi 信息
    createWifiConfig(SSID, Password, Type, BSSID) {
        const WifiConfiguration = this.WifiConfiguration;
 
        let config = new WifiConfiguration();
        console.log("createWifiConfig config", WifiConfiguration);
        config.allowedAuthAlgorithms.clear();
        console.log("createWifiConfig allowedAuthAlgorithms");
        config.allowedGroupCiphers.clear();
        console.log("createWifiConfig allowedGroupCiphers");
        config.allowedKeyManagement.clear();
        console.log("createWifiConfig allowedKeyManagement");
        config.allowedPairwiseCiphers.clear();
        console.log("createWifiConfig allowedPairwiseCiphers");
        config.allowedProtocols.clear();
        console.log("createWifiConfig allowedProtocols");
        config.SSID = '"' + SSID + '"';
        console.log("createWifiConfig2", config);
        if (Type === "nopass") {
            config.preSharedKey = "";
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            config.wepTxKeyIndex = 0;
        }
        if (Type === "wep") {
            if (Password !== "") {
                if (this.isHexWepKey(Password)) {
                    config.preSharedKey = Password;
                } else {
                    config.preSharedKey = "\"" + Password + "\"";
                }
            }
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
            config.wepTxKeyIndex = 0;
        }
        if (Type === "wpa") {
            console.log("createWifiConfig3", Type);
            config.preSharedKey = "\"" + Password + "\"";
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            config.status = WifiConfiguration.Status.ENABLED;
        }
        console.log("createWifiConfig end", config);
        return config;
    },
    // 判断是否是十六进制的 WEP 密钥
    isHexWepKey(key) {
        const hexPattern = /^([0-9a-fA-F]{2})+$/;
        return hexPattern.test(key);
    },
    // 查看以前是否配置过这个网络
    isExsitsAndroid(sSID) {
        const existingConfigs = this.wifiManager.getConfiguredNetworks();
        if (existingConfigs.size() != 0) {
            for (let i = 0; i < existingConfigs.size(); i++) {
                if (existingConfigs.get(i).SSID === ('"' + sSID + '"')) {
                    console.log("该指定的 ssid 存在于配置中:" + sSID);
                    return existingConfigs.get(i);
                }
            }
        }
        console.log("该 ssid 没有配置过");
        return null;
    },
 
}