uniapp Wi-Fi功能模块
App平台由 uni ext api 实现,需下载插件:uni-WiFi
注意:导入uni_modules规范插件需要使用 3.1.0 以上版本的 HBuilderX
需要具备下面的权限
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>"
const connectWifi=()=>{
// #ifdef APP-PLUS
uni.getNetworkType({
success: function (res) {
if(res.networkType != "wifi"){
uni.showToast({
icon:'none',
duration:2000,
title:"未连接WIFI,自动连接AGV-WIFI",
})
contentWifi()
}else{
//判断获取的WiFi是否为机型WiFi
// 主窗体
var MainActivity = plus.android.runtimeMainActivity()
// 上下文
var Context = plus.android.importClass('android.content.Context')
// 导入WIFI管理 和 WIFI 信息 的class
plus.android.importClass("android.net.wifi.WifiManager")
plus.android.importClass("android.net.wifi.WifiInfo")
plus.android.importClass("android.net.wifi.ScanResult")
plus.android.importClass("java.util.ArrayList")
// 获取 WIFI 管理实例
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE)
// 获取当前连接WIFI的信息
var info = wifiManager.getConnectionInfo()
// 获取当前 WIFI 连接的 SSID (WIFI 名称)
var ssid = info.getSSID()
// 这里的 获取到的名称 是 带 双引号的 如 "cmcc"
// 所以我们这里处理一下
ssid = ssid.replace(/(^\"*)|(\"*$)/g, "")
console.log("info",ssid)
if(ssid!=uni.getStorageSync('WIFI-name')){
uni.showLoading({
title: "正在切换WIFI至"+uni.getStorageSync('WIFI-name')
})
contentWifi()
}
// var resultList = wifiManager.getScanResults(),
// len = resultList.size()
// for(var i = 0; i < len; i++) {
// console.log(resultList.get(i).plusGetAttribute('SSID'))
// let aaa = resultList.get(i).plusGetAttribute('SSID')
}
}
})
// #endif
}
const contentWifi = () => {
uni.getSystemInfo({
success: function(res){
let system = ''
// console.log("当前手机型号===>", res)
if(res.platform == 'android'&&res.system.substr(8)>10){
// 当安卓系统版本大于10时,需要跳转到WIFI设置页,手动连接WIFI
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var mIntent = new Intent('android.settings.WIFI_SETTINGS');
main.startActivity(mIntent)
uni.hideLoading();
return
}
// if (res.platform == 'android') {
// system = parseInt(res.system.substr(8))
// }
// if (res.platform == 'ios') {
// system = parseInt(res.system.substr(4))
// }
// if (res.platform == 'android' && system < 6) {
// uni.showToast({
// title: '手机版本不支持',
// icon: 'none'
// })
// return
// }
if (res.platform == 'ios') {
uni.showToast({
title: '手机版本不支持',
icon: 'none'
})
return
}
//初始wifi模块
startWifi()
}
})
}
// 初始化WIFI模块
const startWifi = async() => {
uni.startWifi({
success: function(res){
// uni.showToast({
// title: "初始化WIFI成功"
// })
setTimeout(() => {
connected()
}, 4000);
},
fail: function(error) {
// uni.showToast({
// title: '初始化WIFI失败',
// icon: 'error'
// })
},
complete: function() {
// uni.showToast({
// title: '初始化WIFI完成',
// icon: 'error'
// })
}
})
}
const connected = () => {
uni.connectWifi({
SSID: uni.getStorageSync('WIFI-name'), //Wi-Fi 设备名称
password: uni.getStorageSync('WIFI-pwd'), //Wi-Fi 密码
success: (res) => {
// uni.showToast({
// title: "已连接到网络"+uni.getStorageSync('WIFI-name'),
// icon: 'none'
// })
uni.hideLoading();
},
fail: (error) => {
uni.showToast({
title: '网络'+uni.getStorageSync('WIFI-name')+'连接失败',
icon: 'none',
})
uni.hideLoading();
}
})
}
module.exports = {
connectWifi
}