LoginSignup
0
1

More than 3 years have passed since last update.

setData された Intent の Broadcast の 送受信

Last updated at Posted at 2019-06-05

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)

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1