uni-app android 原生插件蓝牙配对报错 BLUETOOTH PRIVILEGED 但可以配对成功
uni-app android 原生插件蓝牙配对报错 BLUETOOTH PRIVILEGED 但可以配对成功
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Windows 10 家庭中文版 21H2 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
手机系统: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
1 回复
在 uni-app 中开发 Android 原生插件时,如果遇到蓝牙配对报错 BLUETOOTH_PRIVILEGED
,但配对仍然成功,这通常与 Android 系统的权限管理有关。以下是一些可能的原因和解决方案:
1. 权限问题
BLUETOOTH_PRIVILEGED
是一个系统级别的权限,普通应用无法直接申请。它通常用于系统应用或具有特殊权限的应用。- 如果你的应用没有这个权限,但仍然能够配对成功,可能是因为 Android 系统允许某些蓝牙操作在没有该权限的情况下进行,但会抛出警告或错误。
解决方案:
- 确保你的应用已经申请了所有必要的蓝牙权限,例如:
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />