2012-01-13 64 views
3
IntentFilter intentFilter = new IntentFilter("test"); 
registerReceiver(mReceiver, intentFilter); 

我想沒有像registerReceiver(mReceiver, null)過濾器,但我的應用程序因此崩潰。我可以將new IntentFiler()作爲空文件嗎?試圖有沒有過濾器的廣播接收器

回答

6

因爲廣播接收器時,有通過從IntentFilter的標準不匹配返回null,這是不可能的API來完成你希望實現的(這我假設在發送的任何及所有廣播到mReceiver)什麼。

你當然可以指定一個空的IntentFilter,但這樣做很沒用,因爲註冊接收器不會導致它捕獲任何廣播(除非它們直接針對接收器,正如MisterSquonk在評論中提到的那樣)。否則,您必須確切知道您想要使用BroadcastReceiver捕捉哪些廣播,然後在IntentFilter中指定條件。

+3

「...註冊接收器不會導致它捕獲任何廣播。」 - 你確定?可以在沒有''元素的清單中使用''元素來註冊'BroadcastReceiver'。在這種情況下,你可以通過明確指定它的類來直接發送一個'Intent'給接收者,因爲你直接定位一個'Activity'。例如,'Intent i = new Intent(this,MyBroadcastReceiver.class);' – Squonk 2012-01-14 00:18:52

+0

@MisterSquonk,真的,謝謝你的提醒。我在考慮非定向廣播。我會更新我的帖子。 – 2012-01-14 00:27:20

+0

是的,我想我們不應該那麼懶,也試圖發送沒有任何字符串設置的意圖 – user25 2017-02-03 12:21:56