仅向特定活动发送广播

时间:2011-07-14 17:52:31

标签: android broadcastreceiver intentfilter intentservice

我有一个活动,它在方法onCreate(...)中使用 IntentFilter 创建 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 lib中,也许这会给你带来麻烦。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:10)

只需使用您的操作创建意图。

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

并考虑将“action”重命名为更有意义的内容,例如“com.my.package.actions.SOME_ACTION”。

如果您只希望应用程序组件接收广播,请使用:

  1. 使用signature保护级别在您的清单中注册权限(并为该权限定义使用权限)。更多here
  2. 使用sendBroadcast(intent, permission),并在1中指定权限。

答案 1 :(得分:6)

如果意图仅在您的应用内,请考虑使用LocalBroadcastManager