Java Android Program to Demonstrate Ordered BroadCast

«
»
Here is source code of the Program demonstrate an Ordered Intent in Android. The program is successfully compiled and run on a Windows system using Eclipse Ide. The program output is also shown below.

When the order in which the Broadcast Receivers receive the Intent is important — particularly where you want to allow Receivers to affect the Broadcast Intent received by future Receivers — you can use sendOrderedBroadcast, as follows:

String requiredPermission = 
              “com.example.package_name.MY_BROADCAST_PERMISSION;
sendOrderedBroadcast(intent, requiredPermission);

Using this method, your Intent will be delivered to all registered Receivers that hold the required permission (if one is specified) in the order of their specified priority. You can specify the priority of a Broadcast Receiver using the android:priority attribute within its Intent Filter manifest node, where higher values are considered higher priority.

advertisement

Main Activity

 
package com.example.ordered_broadcast;
 
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.ReceiverCallNotAllowedException;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_main);
               Button b1 = (Button) findViewById(R.id.button1);
               b1.setOnClickListener(new View.OnClickListener() {
                  @Override
                     public void onClick(View v) {
                         // TODO Auto-generated method stub
                           broadcastintent();
            }
        });
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
    }
 
    public void broadcastintent() {
                Intent intent = new Intent();
                intent.setAction("com.example.ordered_broadcast.OrderedBroadcast");
                sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
                    @SuppressLint("NewApi")
                    @Override
                       public void onReceive(Context context, Intent intent) {
                              /*
                               * to capture result after all broadreceivers are finished
                               * executing
                               */
                      }
        }, null, Activity.RESULT_OK, null, null);
 
    }
 
}

MyReceiver1

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate Now!
advertisement
advertisement
 
package com.example.ordered_broadcast;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
 
public class MyReceiver1 extends BroadcastReceiver{
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
                   Toast.makeText(context, "MyReceiver1 provoked", Toast.LENGTH_LONG).show();
    }
 
}

MyReceiver2

advertisement
package com.example.ordered_broadcast;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
 
public class MyReceiver2 extends BroadcastReceiver{
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
                  Toast.makeText(context, "MyReceiver2 provoked", Toast.LENGTH_LONG).show();
    }
 
}

Activity_Main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="186dp"
        android:text="Launch" />
 
</RelativeLayout>

Register your receiver here and set the priority of them accordingly.
Android Manifest

advertisement
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ordered_broadcast"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.ordered_broadcast.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
        <receiver android:name=".MyReceiver1" >
            <intent-filter android:priority="1" >
                <action android:name="com.example.ordered_broadcast.OrderedBroadcast" />
            </intent-filter>
        </receiver>
        <receiver android:name=".MyReceiver2" >
            <intent-filter android:priority="2" >
                <action android:name="com.example.ordered_broadcast.OrderedBroadcast" />
            </intent-filter>
        </receiver>
    </application>
 
</manifest>

Here is output of the code sequentially.

ordered_broadcast1

ordered_broadcast2

advertisement

Sanfoundry Global Education & Learning Series – 100+ Java Android Tutorials.

If you wish to look at all Tutorials, go to Java Android Tutorials.

advertisement
advertisement
Subscribe to our Newsletters (Subject-wise). Participate in the Sanfoundry Certification contest to get free Certificate of Merit. Join our social networks below and stay updated with latest contests, videos, internships and jobs!

Youtube | Telegram | LinkedIn | Instagram | Facebook | Twitter | Pinterest
Manish Bhojasia - Founder & CTO at Sanfoundry
Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Subscribe to his free Masterclasses at Youtube & technical discussions at Telegram SanfoundryClasses.