如何从Intentchooser Android

时间:2018-10-01 20:04:37

标签: android kotlin

我正在尝试确定用户从我的自定义意图选择器中选择哪种意图,但是出于任何原因,我都无法启动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方法上设置了中断代码,但从未触发过。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我非常确定您不能将Intent目标设置为匿名的BroadcastReceiver或内部的BroadcastReceiver。

将其设为静态子类或将其放在自己的文件中。您仍然可以动态构造和注册它。 (旁注:记住实际注册它。如果未注册,它将不会收到Intent。)

或者,使用自定义操作,不要理会显式的目标组件。动态注册的BroadcastReceiver不受Oreo中的隐式广播限制。