Search code examples
javaandroidandroid-broadcast

How can I use more than one Broadcast in activity?


[Service.java]

Intent intent = new Intent();
intent.setAction("sample");
intent.putExtra("timer_real", hms);
sendBroadcast(intent);

[Activity.java]

public void onResume() {
    super.onResume();
    IntentFilter filter = new IntentFilter();
    filter.addAction("sample");
    registerReceiver(sn_english, filter);
}

public void onPause() {
    super.onPause();
    unregisterReceiver(sn_english);
}

BroadcastReceiver sn_english= new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {


        String timer_real = intent.getStringExtra("timer_real");
        textTimer.setText(timer_real);

    }
};

The above code is composite to use BroadCast in Android Activity.

Like you can see, we send BR in Servive.java, and receive it in Activity.java

Fortunately, it works ordinarily, but I want use one more BR in this activity.

So, how can I use that? The second one is also send in Service.java and receive in Activity.java


Solution

  • Set a different action for your intent on the second sendBroadcast. Example:

    Intent intent = new Intent();
    intent.setAction("second_intent);
    sendBroadcast(intent);
    

    Then you can register your activity for that new action:

    IntentFilter filter = new IntentFilter();
    filter.addAction("sample");
    filter.addAction("second_intent");
    registerReceiver(sn_english, filter);
    

    And in your onReceive() method, just do a if/else on the action:

    if(intent.getAction().equals("sample"))
    {
    // first intent
    }
    else if(intent.getAction().equals("second_intent"))
    {
    // second intent
    }