在kotlin中启用和禁用广播

我写了这个代码来启用和禁用广播:

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) 

但Android Studio发生了一些错误,直到我将component更改为:

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

基于这个链接,它应该被用来检索一个对象的Java类,但是我所有的类都在kotlin中。 所以我想知道如果我做对了。

它给你错误,因为ComponentName类需要一个上下文和一个Java类。 既然你的课程是写在Kotlin,你应该按照你所说的去做课堂:

DateChangeReceiver::class.java

要么

DateChangeReceiver::javaClass

如果ComponentName期望Kotlin类,那么没有.java就没有问题

你将面对这个使用一些Java库。

也请检查一下Kotlin的反射。 如上所述:

请注意,Kotlin类引用与Java类引用不同。 要获取Java类引用,请在KClass实例上使用.java属性。