Для некоторых целей ведения журнала мне нужно включить Bluetooth HCI-журнал на моем устройстве. Конечно, это можно легко сделать из меню «Настройки разработчиков», но большинство моих пользователей не знакомы с этим, и я хотел бы сделать это программно. Эти устройства не будут внедрены, поэтому я не могу вручную отредактировать файл bt_stack.conf.Включить протокол Bluetooth HCI программно
При поиске в Интернете я нашел скрытый API-метод BluetoothAdapter.configHciSnoopLog()
. Я не хочу возиться с SDK баночками, поэтому я хотел бы использовать отражение для того, чтобы получить доступ к этому методу, как это:
Method configHciSnoopLogMethod = BluetoothAdapter.class.getDeclaredMethod("configHciSnoopLog", boolean.class);
Object r = configHciSnoopLogMethod.invoke(BluetoothAdapter.getDefaultAdapter(), true);
Это хорошо работает около ~ 20% устройств, которые я тестировал (возвращает true
), но возвращает false
для остальных (из ~ 20 различных устройств). Я даю правильное приложение BLUETOOTH_ADMIN
, поэтому я не знаю, почему он не работает. Поскольку я смотрел исходный код AOSP для основного приложения Settings, это именно то, что он делает внутри (просто без отражения, конечно). Есть что-то, чего я не хватает? Некоторые разрешения, которые необходимо добавить?
Спасибо за помощь!