android 发送广播设置 intent.setData 后,动态注册该广播的 app 接收不到。
app1 发送广播的代码如下:
val intent = Intent()
intent.setAction("vendor.receivebroadcast")
val url = "music://soog:0/"
intent.data = Uri.parse(url)
sendBroadcast(intent)
app2 接收广播的代码如下
class MyReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
println("onReceive enter")
when (intent.action) {
"vendor.receivebroadcast" -> {
println("onReceive vendor.receivebroadcast enter")
}
}
}
}
由于设置了 intent.setData 参数,实际测试下来 app2 接收不到广播。
如果把 intent.setData 删掉,app2 就可以接收到广播了。这是什么原因呢?
AI 是这样回答的,大概意思就是如果是动态注册要接收到广播,就不推荐发送广播的时候用 sentData