2011-07-14 57 views
9

我有一個活動其與的IntentFilter在該方法中onCreate(...)創建的BroadcastReceiver發送的廣播只對特定活動

IntentFilter iFilter = new IntentFilter("action"); 

receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

    } 
}; 

registerReceiver(receiver, iFilter); 

在另一側是一個IntentService,這應發送一些數據:

Intent intent = new Intent(getApplicationContext(), receiver.class); 
intent.setAction("action"); 

[...] 

sendBroadcast(intent); 

但它似乎不工作。沒有收到廣播
我的服務類是在一個Android庫,也許這會造成麻煩。

感謝您的任何建議。

+0

它應該工作。你爲什麼認爲它不起作用?只要您在主項目中引用您的圖書館項目,它是否在圖書館項目中並不重要。 –

+1

我不這麼認爲。我在測試時注意到了它。 – CSchulz

+0

在onRecieve方法中記錄或打印某些內容。 logcat說什麼? –

回答

10

只需用您的操作創建意圖。

Intent intent = new Intent("action"); 
[...] 
sendBroadcast(intent); 

而且考慮重命名 「行動」,以更有意義的事情,比如 「com.my.package.actions.SOME_ACTION」。

如果你只想要你的應用程序組件接收廣播然後使用:

  1. 註冊在你的清單與signature保護級別權限(並定義爲允許一個用權限)。更多here
  2. 使用sendBroadcast(intent, permission),並在1
+0

有名字更有意義。 ;)當我使用這種方式時,每個人都可以收到我的*廣播*,並且我想阻止。 – CSchulz

+0

這就是廣播事件的想法。大家都是什麼意思?你的活動應該停止在他們生命週期的某個地方聽,可能在onPause方法中。 – aromero

+0

我的意思是*廣播*可以接收不同的活動不僅我自己的,不是嗎? – CSchulz