3

應用程序A在其清單這個廣播接收器(<應用>內):爲什麼我的BroadcastReceiver不能從另一個應用程序接收廣播?

而這個接收器:

public class RemoteControl extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.w(TAG, "Look what I did!"); 
    } 
} 

我試圖從應用B觸發此:

public void onClick(View v) { 
    Log.w(TAG, "Sending stuff"); 
    Intent i = new Intent("app.a.remotecontrol"); 
    i.setData("http://test/url"); 
    sendBroadcast(i); 
} 

無論出於何種原因,應用程序A中的onReceive()都不會被觸發,即使它是從應用程序B廣播的。這可能是什麼原因造成的?

編輯& 解決方案:我忘記寫我在廣播之前在Intent上使用過setData()。這確實是個問題:只要我刪除了setData(),廣播就按預期工作。

+0

奇怪。代碼看起來很好。 – Macarse 2010-07-05 11:51:49

+0

它也適用於我。這令人沮喪。 – neu242 2010-07-05 12:02:49

+2

嘗試添加到意圖過濾器 – ognian 2010-07-05 12:05:50

回答

3

本來我忘記寫我在廣播之前在Intent上使用了setData()。這確實是個問題:只要我刪除了setData(),廣播就按預期工作。

我切換到使用putExtra(),而不是在意向的元數據:

Intent i = new Intent("app.a.remotecontrol"); 
i.putExtra("url", "http://test/url"); 
sendBroadcast(i); 
相關問題