在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属性。