uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错
uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错
操作步骤:
- uniapp开发,调用uni.writeBLECharacteristicValue
预期结果:
- 顺利调用接口uni.writeBLECharacteristicValue
实际结果:
- 报错{“errMsg”:“writeBLECharacteristicValue:fail property not support”,“code”:10007}
bug描述:
- uniapp打包成安卓apk调用uni.writeBLECharacteristicValue报错,报错{“errMsg”:“writeBLECharacteristicValue:fail property not support”,“code”:10007},同一份代码运行到小程序可以顺利调用uni.writeBLECharacteristicValue,app里调用就报错了,请问下是什么原因呢
| 信息类别 | 信息内容 |
|------------------|----------------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC操作系统版本 | win11 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 4.75 |
| 手机系统 | Android |
| 手机系统版本 | Android 9.0 |
| 手机厂商 | 荣耀 |
| 手机机型 | 荣耀8A |
| 页面类型 | vue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app打包成安卓apk调用uni.writeBLECharacteristicValue报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个错误通常是由于蓝牙特征值的属性不支持写入操作导致的。在Android平台上,蓝牙特征值有不同的属性(如read、write、notify等),只有当特征值具有write属性时才能调用writeBLECharacteristicValue。
建议检查以下几点:
-
确认获取到的蓝牙特征值(characteristic)是否支持写入操作。可以通过characteristic.properties中是否包含write属性来验证。
-
在调用writeBLECharacteristicValue之前,建议先通过uni.getBLEDeviceCharacteristics获取设备特征值列表,检查目标特征值的properties属性。
-
确保在Android平台上使用的特征值UUID与小程序环境一致,不同平台对蓝牙特征值的支持可能存在差异。
-
检查是否在正确的服务(service)下查找特征值,不同服务下的特征值属性可能不同。
可以在代码中添加特征值属性检查逻辑:
uni.getBLEDeviceCharacteristics({
deviceId: deviceId,
serviceId: serviceId,
success: (res) => {
res.characteristics.forEach(characteristic => {
if (characteristic.uuid === targetUUID) {
console.log('特征值属性:', characteristic.properties)
// 检查是否支持write
if (characteristic.properties.write) {
// 执行写入操作
}
}
})
}
})

