我正在尝试确定用户从我的自定义意图选择器中选择哪种意图,但是出于任何原因,我都无法启动onReceive。这是我的代码示例:
val extraIntents = intentList.toTypedArray()
val receiver = Intent(context, broadcastReceiver.javaClass)
val pendingIntent: PendingIntent = PendingIntent.getBroadcast(context, 0,
receiver, PendingIntent.FLAG_UPDATE_CURRENT)
Intent.createChooser(intentList[0], "choose an intent..",
pendingIntent.intentSender)
startActivityForResult(openInChooser, SELECTOR_CODE)
在前面,我定义了broadcastReceiver:
broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(p0: Context?, p1: Intent?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
我运行了这段代码,并在该onReceive
方法上设置了中断代码,但从未触发过。任何帮助将不胜感激!
答案 0 :(得分:1)
我非常确定您不能将Intent目标设置为匿名的BroadcastReceiver或内部的BroadcastReceiver。
将其设为静态子类或将其放在自己的文件中。您仍然可以动态构造和注册它。 (旁注:记住实际注册它。如果未注册,它将不会收到Intent。)
或者,使用自定义操作,不要理会显式的目标组件。动态注册的BroadcastReceiver不受Oreo中的隐式广播限制。