【问题标题】:Enable Bluetooth HCI log programmatically以编程方式启用蓝牙 HCI 日志
【发布时间】:2016-12-29 11:53:40
【问题描述】:

出于某些日志记录目的,我需要在我的设备上启用蓝牙 HCI 日志。当然,这可以通过“开发者设置”菜单轻松完成,但我的大多数用户都不熟悉它,我想以编程方式进行。这些设备不会被植根,所以我不能手动编辑 bt_stack.conf 文件。

在网上搜索时,我发现了一个隐藏的 API 方法BluetoothAdapter.configHciSnoopLog()。我真的不想弄乱SDK jar,所以我想使用反射来访问这个方法,如下所示:

Method configHciSnoopLogMethod = BluetoothAdapter.class.getDeclaredMethod("configHciSnoopLog", boolean.class);
Object r = configHciSnoopLogMethod.invoke(BluetoothAdapter.getDefaultAdapter(), true);

这在我测试的大约 20% 的设备上运行良好(返回 true),但在其余设备(大约 20 种不同的设备中)返回 false。我正在给应用程序正确的BLUETOOTH_ADMIN 权限,所以我不知道为什么它不起作用。当我查看主设置应用程序的 AOSP 源代码时,这正是它在内部所做的(当然只是没有反射)。有什么我想念的吗?应该添加一些权限?

【问题讨论】:

    标签: android reflection bluetooth hci


    【解决方案1】:
    Settings.Secure.putInt(context.getContentResolver(), "bluetooth_hci_log", 1);
    

    【讨论】:

    • 这是不可能的,因为您需要只有系统应用才能拥有的 WRITE_SECURE_SETTINGS 权限。
    猜你喜欢
    • 2016-07-19
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多