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); 
相关问题