首页 > 解决方案 > 如何在 Kotlin 中覆盖隐藏的 Java 回调:反射

问题描述

我正在使用 Android API 27 和 Kotlin,并希望覆盖通过@hide. 这个问题是继我之前的问题之后的问题。有问题的回调在BluetoothGatt.javaonConnectionUpdated中定义。回调函数也在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

我知道我也可以使用 Kotlin 的反射库,但同样,我不确定如何使用。

谢谢。

标签: javaandroidkotlin

解决方案


推荐阅读