2011-03-07 22 views
4

我已经注册为监听以下动作一个BroadcastReceiver ..setData on intent防止sendBroadcast正常工作?

public static final String MY_ACTION = "com.blah.intent.action.DOSOMETHING"; 

而且在我的代码我有

Intent intent = new Intent(MY_ACTION); 
sendBroadcast(intent); 

如果我用这个广播发送,如果我收到了罚款,但通过将这些线将在直播开始前添加使用使用setData 一个URI ..

Uri uri = Uri.parse("/sdacrd/myfile"); 
intent.setData(uri); 

如果我的SetData的broadcas t没有收到。

任何人都可以解释为什么设置数据意图防止广播工作?

回答

4

Android不仅在ACTION上查看,而且在数据和模式的类型上查找。你应该告诉你的接收器可以通过调用IntentFilter上的addDataSchema()或addDataType()来接收这个类型。如果你只想发送字符串,为什么不使用额外的?

+0

是的,我只是用一个字符串开始,但作为我发送的字符串是一个Uri它似乎是有道理的使用setData – Azalar 2011-03-07 14:52:06

+0

我不知道,但如果你使用它作为数据,那么你有指定MIME类型的数据。所以,使用额外功能更简单。 – damluar 2011-03-07 15:27:43

+1

是设置数据类型固定它。 – Azalar 2011-03-07 16:06:07

1

我同意damluar。

从Android开发人员: 添加新的Intent数据方案以匹配。如果过滤器中包含任何方案,则Intent的数据必须是这些方案之一或匹配的数据类型。如果不包含任何方案,则只有在不包含任何数据的情况下,Intent才会匹配。

副诗,如果您在Intent中添加数据,您必须在意图过滤器中添加数据类型或方案。

相关问题