我写了这段代码来启用和禁用广播:
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中。所以我想知道我是否做得对。
答案 0 :(得分:1)
它给你错误,因为ComponentName类需要一个上下文和一个Java类。由于你的课程是用Kotlin编写的,你应该像你说的那样上课:
DateChangeReceiver::class.java
或
DateChangeReceiver::javaClass
如果ComponentName期望一个Kotlin类,那么没有.java
您将使用一些Java库来解决这个问题。
同时检查this关于Kotlin的反思。如上所述:
请注意,Kotlin类引用与Java类引用不同。要获取Java类引用,请在KClass实例上使用.java属性。