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

4th*_*his 5 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();  
    }

}
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

LocalBroadcastManager localBroadcastManager =LocalBroadcastManager.getInstance(this);

localBroadcastManager.sendBroadcast(resultsIntent);
Run Code Online (Sandbox Code Playgroud)

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

知道我在这里做错了什么吗?谢谢你的帮助.

Joh*_*yAW 12

您正在使用LocalBroadcastManager发送请求,但您在"全局"意图上注册接收器.您应该使用LocalBroadcastManager注册接收器或在应用程序上下文中发送广播:

第2步

LocalBroadcastManager.getInstance(this).registerReceiver (receiver, filter);
Run Code Online (Sandbox Code Playgroud)