10

我有一个Activity在方法中创建一个带有IntentFilter的BroadcastReceiveronCreate(...)

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 中,也许这会带来麻烦。

感谢您的任何建议。

4

2 回答 2

10

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

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

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

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

  1. 在您的清单中注册一个具有signature保护级别的权限(并为该权限定义一个使用权限)。更多在这里
  2. 使用sendBroadcast(intent, permission),并在 1 中指定权限。
于 2011-07-14T18:23:56.143 回答
6

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

于 2014-01-27T00:14:06.443 回答