Broadcast で送信する Intent に setData() した場合、受信側の IntentFilter では、addDataScheme()/addDataAuthority() または、addDataType() を指定する必要があった。
ファイルの URI を data にセットしてブロードキャストして、受信する例
URI のみ送信
送信側
val intent = Intent(ACTION_DOWNLOADED)
intent.data = Uri.parse("file:///storage/emulated/0/downloadFile.zip")
sendBroadcast(intent)
受信側
val intentFilter = IntentFilter(ACTION_DOWNLOADED)
intentFilter.addDataScheme("file") // スキーマでフィルタ
intentFilter.addDataAuthority("*", null) // ホスト/ポートでフィルタ ※実質フィルタしてない
registerReceiver(broadcastReceiver, intentFilter)
URI と MIMEタイプ を送信
送信側
val intent = Intent(ACTION_DOWNLOADED)
intent.data = Uri.parse("file:///storage/emulated/0/downloadFile.zip")
intent.type = "application/zip"
sendBroadcast(intent)
受信側
val intentFilter = IntentFilter(ACTION_DOWNLOADED)
intentFilter.addDataType("application/zip") // MIMEタイプでフィルタ
registerReceiver(broadcastReceiver, intentFilter)