有什么方法可以使用cmd线打开蓝牙(最好是adb shell)

问题描述 投票:0回答:1

我尝试使用cmd bluetooth_manager启用打开蓝牙:
但我看到它在 BluetoothManagerService.java::checkIfCallerIsForegroundUser 中检查失败 由于调用者是shell(UID 2000)。 所以框架不允许打开蓝牙

======================================
还尝试使用服务调用bluetooth_manager 3(调用启用api)
来自蓝牙管理器的空指针引用调用失败

======================================
尝试使用 adb shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
这是请求允许或拒绝许可,它可以自动化,但我正在寻找任何其他选项(如果有)

android bluetooth adb android-source android-13
1个回答
0
投票

在没有用户交互或 root 访问权限的情况下通过 adb shell 启用蓝牙受到 Android 安全策略的限制。以下是您的尝试失败的原因和替代方案:

为什么尝试失败的原因如下

  1. bluetooth_manager enable
    :由于
    BluetoothManagerService
    强制执行
    checkIfCallerIsForegroundUser
    而失败,阻止了像
    adb shell
    这样的非前台用户。
  2. 服务调用 bluetooth_manager 3:可能会触发 NullPointerException,因为所需的状态或依赖项未初始化。
  3. adb shell am start:
    显示需要用户操作的权限对话框。

替代品

  1. 自动化对话框:使用 adb 或 uiautomator 等工具来模拟按钮按下(adb shell 输入 keyevent KEYCODE_DPAD_CENTER)。
  2. Root 访问:如果已获得 root 权限,请通过以下方式启用蓝牙:

adb 根目录

adb shell 服务调用 bluetooth_manager 6

  1. 自定义应用程序:系统签名的应用程序可以使用BluetoothAdapter.enable()而无需用户交互。
  2. 开发者选项:通过“禁用权限监控”放宽限制(仅适用于开发设备)。

无需root,自动化或创建特权应用程序是您的最佳选择。

© www.soinside.com 2019 - 2024. All rights reserved.