setData on Intent 会阻止 sendBroadcast 工作吗?

Aza*_*lar 4 android

我注册了一个 BroadcastReceiver 来监听以下动作..

public static final String MY_ACTION = "com.blah.intent.action.DOSOMETHING";
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我有

Intent intent = new Intent(MY_ACTION);
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

如果我使用它,广播可以正常发送和接收,但是如果我在通过添加这些行发送广播之前使用 setData 添加一个 Uri..

Uri uri = Uri.parse("/sdacrd/myfile");
intent.setData(uri);
Run Code Online (Sandbox Code Playgroud)

如果我 setData 不会收到广播。

谁能解释为什么在意图上设置数据会阻止广播工作?

dam*_*uar 6

Android 不仅关注 ACTION,还关注数据和架构的类型。你应该告诉你的接收者可以通过调用 IntentFilter 上的 addDataSchema() 或 addDataType() 来接收这种类型。如果您只想发送字符串,为什么不使用附加功能?