华为P50搭载鸿蒙4.2.0系统在使用uni-app低功耗蓝牙的时连接蓝牙后获取到的services为空数组但安卓和小程序版都能正常获取

华为P50搭载鸿蒙4.2.0系统在使用uni-app低功耗蓝牙的时连接蓝牙后获取到的services为空数组但安卓和小程序版都能正常获取

信息类别 详情
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 10.0.19045.6332
手机系统 Android
手机版本号 Android 12
手机厂商 华为
手机机型 P50
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 CLI
CLI版本号 4.0.30319.42000

操作步骤:

打包出apk-》发送到华为P50-》无法安装apk-》在真机运行时-》运行在安卓上找到华为p50的手机-》真机安装成功后-》使用蓝牙功能,连接成功后获取services为空

预期结果:

希望可以在P50手机上安装apk安装包,并能使用低功耗蓝牙

实际结果:

现在还是不能使用

bug描述:

云端打包的apk,在华为p50 鸿蒙4.2版本上无法安装,低功耗蓝牙无法使用


更多关于华为P50搭载鸿蒙4.2.0系统在使用uni-app低功耗蓝牙的时连接蓝牙后获取到的services为空数组但安卓和小程序版都能正常获取的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于华为P50搭载鸿蒙4.2.0系统在使用uni-app低功耗蓝牙的时连接蓝牙后获取到的services为空数组但安卓和小程序版都能正常获取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的鸿蒙系统兼容性问题。华为P50升级到鸿蒙4.2.0后,系统对BLE服务的发现机制有所调整,导致uni-app获取到的services数组为空。

问题分析:

  1. 鸿蒙4.2.0在BLE服务发现时可能需要更长的延迟时间
  2. 系统可能在服务发现完成前就返回了结果
  3. 鸿蒙系统对BLE权限的处理与标准Android存在差异

解决方案:

// 在连接成功后添加延迟
uni.createBLEConnection({
  deviceId: deviceId,
  success: (res) => {
    // 鸿蒙系统需要更长的服务发现时间
    setTimeout(() => {
      uni.getBLEDeviceServices({
        deviceId: deviceId,
        success: (servicesRes) => {
          console.log('获取服务成功:', servicesRes.services)
        },
        fail: (err) => {
          console.error('获取服务失败:', err)
        }
      })
    }, 2000) // 鸿蒙建议延迟2秒
  }
})

权限配置检查: 确保manifest.json中蓝牙权限完整:

{
  "permissions": [
    "android.permission.BLUETOOTH",
    "android.permission.BLUETOOTH_ADMIN",
    "android.permission.ACCESS_FINE_LOCATION"
  ]
}
回到顶部