Как переопределить скрытый обратный вызов Java в Kotlin: отражение - PullRequest
0 голосов
/ 11 октября 2018

Я использую Android API 27 и Kotlin и хочу переопределить обратный вызов BLE, который скрыт через @hide.Этот вопрос вытекает из моего предыдущего вопроса .Рассматриваемый обратный вызов onConnectionUpdated и определен в BluetoothGatt.java .Функция обратного вызова также определена в BluetoothGattCallback.java , поэтому я даже не уверен, какую версию мне нужно переопределить.

Я понимаю, что мне нужно использовать отражение для доступа к скрытым функциям-членам класса, но я не могу понять, как на самом деле получить доступ к функции и переопределить ее.

Вот что я пытаюсь, но безрезультатно:

val kclass = Class.forName("android.bluetooth.BluetoothGatt")
val kmethod = kclass.getMethod("onConnectionUpdated")

override fun kmethod(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
    /* do stuff */
}

Ошибка в этом случае: kmethod overrides nothing.

Я понимаю, что могу также использовать библиотеку отражений Котлина, но опять же, я не уверен, как это сделать.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...