uni-app 华为鸿蒙4.2.0.155系统无法获取WiFi名,app出现卡死现象

发布于 1周前 作者 gougou168 来自 Uni-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

2 回复

使用插件市场"获取周围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名并导致应用卡死的问题。

回到顶部