Habilitar y deshabilitar una transmisión en kotlin

Escribí este código para habilitar y deshabilitar una transmisión:

val broadcastState = when(state){ true -> {PackageManager.COMPONENT_ENABLED_STATE_ENABLED} false -> {PackageManager.COMPONENT_ENABLED_STATE_DISABLED} } val component:ComponentName=ComponentName(this,DateChangeReceiver::class) packageManager.setComponentEnabledSetting(component, broadcastState,PackageManager.DONT_KILL_APP) 

Pero Android Studio dio un error hasta que cambié el component a este:

 val component:ComponentName=ComponentName(this,DateChangeReceiver::class.java) 

Basado en este enlace , debería utilizarse para recuperar la class Java de un object, pero todas mis classs están en kotlin. Entonces me pregunto si lo estoy haciendo bien.

Le está dando error porque la class ComponentName espera un context y una class Java. Como tu class fue escrita en Kotlin, deberías get la class haciendo lo que dijiste:

DateChangeReceiver::class.java

o

DateChangeReceiver::javaClass

Si el ComponentName esperaba una class de Kotlin, no habría ningún problema al hacerlo sin el .java

Te enfrentarás a esto usando algunas bibliotecas de Java.

También verifique esto sobre la reflexión en Kotlin. Como se dijo allí:

Tenga en count que una reference de class Kotlin no es lo mismo que una reference de class Java. Para get una reference de class Java, use la propiedad .java en una instancia de KClass.