2***@qq.com
2***@qq.com
  • 发布:2023-11-30 17:47
  • 更新:2023-11-30 17:47
  • 阅读:200

【报Bug】android 原生插件蓝牙配对报错 BLUETOOTH PRIVILEGED 但可以配对成功

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 家庭中文版 21H2

HBuilderX类型: 正式

HBuilderX版本号: 3.95

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: M8

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

问题日志:

reportJSException >>>> exception function:invokeCallJSBatch, exception:invokeCallJSBatch#com.alibaba.fastjson.JSONException: toJSON error  
    at com.alibaba.fastjson.JSON.toJSON(JSON.java:1226)  
    at com.alibaba.fastjson.JSON.toJSON(JSON.java:1116)  
    at com.taobao.weex.wson.Wson$Builder.writeAdapterObject(Wson.java:606)  
    at com.taobao.weex.wson.Wson$Builder.writeObject(Wson.java:503)  
    at com.taobao.weex.wson.Wson$Builder.writeMap(Wson.java:593)  
    at com.taobao.weex.wson.Wson$Builder.writeObject(Wson.java:416)  
    at com.taobao.weex.wson.Wson$Builder.writeObject(Wson.java:431)  
    at com.taobao.weex.wson.Wson$Builder.writeMap(Wson.java:593)  
    at com.taobao.weex.wson.Wson$Builder.writeObject(Wson.java:416)  
    at com.taobao.weex.wson.Wson$Builder.writeObject(Wson.java:465)  
    at com.taobao.weex.wson.Wson$Builder.toWson(Wson.java:382)  
    at com.taobao.weex.wson.Wson$Builder.access$400(Wson.java:355)  
    at com.taobao.weex.wson.Wson.toWson(Wson.java:117)  
    at com.taobao.weex.utils.WXWsonJSONSwitch.toWsonOrJsonWXJSObject(WXWsonJSONSwitch.java:87)  
    at com.taobao.weex.bridge.WXBridgeManager.invokeCallJSBatch(WXBridgeManager.java:2246)  
    at com.taobao.weex.bridge.WXBridgeManager.handleMessage(WXBridgeManager.java:1913)  
    at com.taobao.weex.common.WXThread$SafeCallback.handleMessage(WXThread.java:109)  
    at android.os.Handler.dispatchMessage(Handler.java:103)  
    at android.os.Looper.loop(Looper.java:224)  
    at android.os.HandlerThread.run(HandlerThread.java:67)  
Caused by: java.lang.reflect.InvocationTargetException  
    at java.lang.reflect.Method.invoke(Native Method)  
    at com.alibaba.fastjson.util.FieldInfo.get(FieldInfo.java:571)  
    at com.alibaba.fastjson.serializer.FieldSerializer.getPropertyValue(FieldSerializer.java:151)  
    at com.alibaba.fastjson.serializer.JavaBeanSerializer.getFieldValuesMap(JavaBeanSerializer.java:799)  
    at com.alibaba.fastjson.JSON.toJSON(JSON.java:1221)  
    ... 19 more  
Caused by: java.lang.SecurityException: Need BLUETOOTH PRIVILEGED permission: Neither user 11660 nor current process has android.permission.BLUETOOTH_PRIVILEGED.  
    at android.os.Parcel.createException(Parcel.java:2074)  
    at android.os.Parcel.readException(Parcel.java:2042)  
    at android.os.Parcel.readException(Parcel.java:1990)  
    at android.bluetooth.IBluetooth$Stub$Proxy.getSilenceMode(IBluetooth.java:3117)  
    at android.bluetooth.BluetoothDevice.isInSilenceMode(BluetoothDevice.java:1884)  
    ... 24 more

操作步骤:

点击配对,弹出配对提示框,选择配对按钮,报错;但不影响配对结果,结果依然可以成功配对;

预期结果:

正常配对,不报错

实际结果:

正常配对,会报错

bug描述:

项目背景: 开发了一个android原生插件,可用于蓝牙连接配对等功能操作;
问题: ble蓝牙连接没有问题,但是触发bt传统蓝牙配对的时候会报错;

问题分析: 经过筛查发现是蓝牙配对的过程中会使用 com.alibaba.fastjson 插件映射 BluetoothDevice 类中的 isInSilenceMode 方法,而这个方法大概意思是:选择自动配对,不经过手动配对;由于当前系统一般为手动配对,自动配对会泄露隐私等情况,所以直接静默配对是不可行的;这里应该是需要更新uni-v8-release.aar包进行处理该问题;

尝试方案:在 android 原生端使用反编译 uni-v8-release.aar,去掉错误日志打印,仅在 AS 中运行工程可行,导出原生插件后移入 Hbuilder 中打自定义基座会打包失败,显示 uni-v8-release.aar 重复冲突,或者是否有什么方案可以修改默认集成的v8包?
错误日志:https://ide.dcloud.net.cn/build/errorLog/f8f67370-8f2e-11ee-ab45-c354fc69beb4

2023-11-30 17:47 负责人:无 分享
已邀请:

要回复问题请先登录注册