Android - 如何使用本地广播接收器?

时间:2014-04-28 17:49:44

标签: android broadcastreceiver

我正在尝试使用本地广播接收器。

为了做到这一点,我已经完成了下一步 -

1)在一个活动中,我想要发生一些事情,我已经创建了一个类 -

private class NewGroupReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("The group ", "GOT IN THE RECIVING");
        Toast.makeText(this, "Working",Toast.LENGTH_SHORT).show();  
    }

}

2)在同一个活动中,我使用下一个代码来创建接收器 -

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    NewGroupReceiver receiver = new NewGroupReceiver();

    //the intent filter will be action = "com.example.demo_service.action.SERVICE_FINISHED"
    IntentFilter filter= new IntentFilter("com.example.apps.action.NEW_GROUP");

    // register the receiver:
    registerReceiver(receiver, filter);
}

3)在服务类中,我使用下一个代码来了解发生了什么事情 -

Intent resultsIntent=new Intent("com.example.apps.action.NEW_GROUP");

LocalBroadcastManager localBroadcastManager =LocalBroadcastManager.getInstance(this);

localBroadcastManager.sendBroadcast(resultsIntent);

现在的问题是,当我想知道的事情发生时 - 我看到它进入我在步骤3中使用的代码,但它似乎没有进入BroadcastReceiver - 这一步1个代码。

知道我在这里做错了什么吗? 感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:12)

您正在使用LocalBroadcastManager发送请求,但是您在" global"上注册了接收器。意图。您应该使用LocalBroadcastManager注册接收器或发送广播 应用程序上下文:

第2步

LocalBroadcastManager.getInstance(this).registerReceiver (receiver, filter);