我尝试使用cmd bluetooth_manager启用打开蓝牙:
但我看到它在 BluetoothManagerService.java::checkIfCallerIsForegroundUser 中检查失败
由于调用者是shell(UID 2000)。
所以框架不允许打开蓝牙
======================================
还尝试使用服务调用bluetooth_manager 3(调用启用api)
来自蓝牙管理器的空指针引用调用失败
======================================
尝试使用 adb shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
这是请求允许或拒绝许可,它可以自动化,但我正在寻找任何其他选项(如果有)
在没有用户交互或 root 访问权限的情况下通过 adb shell 启用蓝牙受到 Android 安全策略的限制。以下是您的尝试失败的原因和替代方案:
为什么尝试失败的原因如下
bluetooth_manager enable
:由于BluetoothManagerService
强制执行checkIfCallerIsForegroundUser
而失败,阻止了像adb shell
这样的非前台用户。adb shell am start:
显示需要用户操作的权限对话框。替代品
adb 根目录
adb shell 服务调用 bluetooth_manager 6
无需root,自动化或创建特权应用程序是您的最佳选择。