2011-03-07 32 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中添加數據,您必須在意圖過濾器中添加數據類型或方案。

相關問題