uni-app android 原生插件蓝牙配对报错 BLUETOOTH PRIVILEGED 但可以配对成功

发布于 1周前 作者 songsunli 来自 Uni-App

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" />
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!