uni-app 华为鸿蒙4.2.0.155系统无法获取WiFi名,app出现卡死现象
uni-app 华为鸿蒙4.2.0.155系统无法获取WiFi名,app出现卡死现象
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Win10 22H2 | HBuilderX |
Android | Android 12 | - |
手机厂商 | - | 华为 |
手机机型 | - | mate60 |
页面类型 | - | vue |
vue版本 | - | vue2 |
打包方式 | - | 云端 |
示例代码:
uni.startWifi({
success: (res) => {
console.log('hhh', res);
// 获取当前连接的Wi-Fi信息
if (res.errMsg == 'startWifi:ok') {
// this.wifiName = ""
// this.wifiInputDisable = !!this.wifiName
console.log('aazoubuzou 里面', );
uni.getConnectedWifi({
success: (ress) => {
console.log('ress', ress);
this.wifiName = ress.wifi.SSID
this.wifiInputDisable = !!this.wifiName
this.wifiFun() //获取wifi名
if (type != 1) {
if (this.isAndroid()) {
this.accessCoarseLocation(
"android.permission.ACCESS_COARSE_LOCATION"
); //模糊位置权限(蓝牙\ble依赖)
}
}
},
fail: (err) => {
console.log('err', err);
if (type != 1) {
this.wifiName = ""
this.wifiInputDisable = !!this.wifiName
this.$showModal({
content: this.$t(
'mattressPw.notConnectedToWiFi'
), //未连接WiFi网络,无法配网
showCancel: false, // 是否显示取消按钮,默认为 true
}).then(res => {}).catch(err => {})
}
}
if (err.errCode == 12005) {
this.wifiName = ""
this.wifiInputDisable = !!this.wifiName
console.log('aazoubuzou ', );
}
},
complete: (aa) => {
console.log('aa', aa);
}
});
}
},
fail: (err) => {
console.log(err);
}
});
//开始搜寻附近的蓝牙外围设备
startBluetoothDevicesDiscovery(){
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false, //是否允许重复上报同一设备
interval: 0, //搜索间隔
success(res) {
//console.log(res)
//console.log("开始搜寻附近的蓝牙外围设备")
},
fail(err) {
this.errList(err); //错误提示
}
})
},
操作步骤:
获取相应权限后,卡死无响应,后续重新进入app,进到此页面,出现一半页面后卡死无响应,使用华为mate60,鸿蒙4.2.0.155版本,nova5z 鸿蒙3.0.0.165版本, 都会出现此情况。其他品牌安卓机能正常使用。
预期结果:
无卡死
实际结果:
卡死
bug描述:
调用uni.startWifi后再调用uni.getConnectedWifi,会报错,getConnectedWifi返回错误码12005,之后就卡死,无响应。注释wifi代码后,使用蓝牙设备不报错,但是无法搜到设备(uni官方的蓝牙api)。同样的代码,用其他安卓机正常运行。后面新建个vue3项目,一样卡死。
更多关于uni-app 华为鸿蒙4.2.0.155系统无法获取WiFi名,app出现卡死现象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
使用插件市场"获取周围wifi "上述两款手机也返回空数组,其余安卓机正常返回搜索到的WiFi列表
更多关于uni-app 华为鸿蒙4.2.0.155系统无法获取WiFi名,app出现卡死现象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对uni-app在华为鸿蒙4.2.0.155系统上无法获取WiFi名并且导致应用卡死的问题,这通常是由于权限管理、API兼容性或系统Bug导致的。以下是一些可能的解决思路和代码示例,帮助你定位并解决问题。
1. 检查权限配置
首先,确保你的应用已经正确配置了获取WiFi信息的权限。在manifest.json
中添加必要的权限配置:
"mp-weixin": {
"appid": "__UNI__XXXXXX",
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于获取WiFi列表"
}
}
},
"hbuilderx": {
"androidPermissions": [
"android.permission.ACCESS_WIFI_STATE",
"android.permission.CHANGE_WIFI_STATE",
"android.permission.ACCESS_FINE_LOCATION",
"android.permission.ACCESS_COARSE_LOCATION"
]
}
注意:鸿蒙系统可能对这些权限的管理有额外的要求,确保在鸿蒙系统的应用设置中查看并授予相关权限。
2. 使用兼容的API获取WiFi信息
在uni-app中,你可以使用uni.getWifiList()
来获取WiFi列表,但需要注意API在不同平台上的兼容性。以下是一个基本的代码示例:
uni.getWifiList({
success: function (res) {
console.log('WiFi列表:', res.wifiList);
// 处理WiFi信息
},
fail: function (err) {
console.error('获取WiFi列表失败:', err);
// 处理错误,如提示用户检查权限等
}
});
3. 捕获异常并处理
为了防止应用卡死,你应该在调用可能抛出异常的API时添加try-catch块,并在catch块中处理异常,例如显示错误提示或进行其他恢复操作。
try {
uni.getWifiList({
success: function (res) {
// 处理WiFi信息
},
fail: function (err) {
// 处理获取WiFi列表失败的情况
}
});
} catch (error) {
console.error('捕获到异常:', error);
// 显示错误提示或进行其他恢复操作
}
4. 联系华为开发者支持
如果以上方法都不能解决问题,建议联系华为开发者支持团队,报告此问题并提供你的应用信息、测试设备信息以及详细的错误日志。他们可能能提供更具体的解决方案或确认这是否是一个系统Bug。
通过这些步骤,你应该能够定位并解决uni-app在华为鸿蒙4.2.0.155系统上无法获取WiFi名并导致应用卡死的问题。