3

应用 A 在其清单中有此 BroadcastReceiver(在 <application> 内):

而这个接收器:

public class RemoteControl extends BroadcastReceiver {

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

我正在尝试从 App 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(),广播就按预期工作了。

4

1 回答 1

3

最初我忘了写我在广播之前在 Intent 上使用了 setData()。这确实是问题所在:一旦我删除了 setData(),广播就按预期工作了。

我已经改用 putExtra() 代替 Intent 元数据:

Intent i = new Intent("app.a.remotecontrol");
i.putExtra("url", "http://test/url");
sendBroadcast(i);
于 2010-07-05T12:22:00.037 回答