在kotlin中启用和禁用广播

时间:2017-08-08 20:49:20

标签: android broadcastreceiver 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)

基于this link,它应该用于检索对象的Java类,但我的所有类都在kotlin中。所以我想知道我是否做得对。

1 个答案:

答案 0 :(得分:1)

它给你错误,因为ComponentName类需要一个上下文和一个Java类。由于你的课程是用Kotlin编写的,你应该像你说的那样上课:

DateChangeReceiver::class.java

DateChangeReceiver::javaClass

如果ComponentName期望一个Kotlin类,那么没有.java

就没有问题

您将使用一些Java库来解决这个问题。

同时检查this关于Kotlin的反思。如上所述:

  

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