如果设置了 Intent Type,为什么我不能成功地向接收者发送广播?

Why I can't send broadcast to receiver successfull if Intent was set Type?

我创建了一个接收器并在我的应用程序中动态注册它:

MyReceiver receiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter("com.test.receiver");
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, intentFilter); 

我写了一些代码如下发送广播,我的接收者可以成功接收消息,一切正常。

Intent intent = new Intent();
intent.setAction("com.test.receiver");
LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);

但是如果我尝试为 Intent 设置类型(),我的接收器将无法工作,什么都不会收到。

Intent intent = new Intent();
intent.setAction("com.test.receiver");

intent.setType("test");

LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

根据AndroidAPI文档,Type没有intent-filter功能,你知道为什么吗?

来自Android documentationsetType()方法用于设置有效的MIME类型。

setType(String type)

Set an explicit MIME data type.

这是您可以发送的常见 MIME 类型。

image/jpeg
audio/mpeg4-generic
text/html
audio/mpeg
audio/aac
audio/wav
audio/ogg
audio/midi
audio/x-ms-wma
video/mp4
video/x-msvideo
video/x-ms-wmv
image/png
image/jpeg
image/gif
.xml ->text/xml
.txt -> text/plain
.cfg -> text/plain
.csv -> text/plain
.conf -> text/plain
.rc -> text/plain
.htm -> text/html
.html -> text/html
.pdf -> application/pdf
.apk -> application/vnd.android.package-archive

test 不是有效的 MIME 类型。