【问题标题】:Why doesn't my BroadcastReceiver receive broadcasts from another app?为什么我的 BroadcastReceiver 收不到来自其他应用的广播?
【发布时间】:2010-07-05 11:22:57
【问题描述】:

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

还有这个接收器:

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(),广播就按预期工作了。

【问题讨论】:

  • 奇怪。代码看起来不错。
  • 对我也一样。这令人沮丧。
  • 尝试将 添加到意图过滤器
  • ognian:我虽然是这个问题,但是唉!我已经用解决方案更新了问题:我在 Intent 上使用了 setData(),它以某种方式阻止它被发送。

标签: android android-intent broadcastreceiver android-manifest


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多