0% found this document useful (0 votes)
30 views

Android - Broadcast Receivers

Android broadcast receiver detail notes

Uploaded by

writesharoon
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Android - Broadcast Receivers

Android broadcast receiver detail notes

Uploaded by

writesharoon
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Android - Broadcast Receivers

Broadcast Receivers simply respond to broadcast messages from other applications or


from the system itself. These messages are sometime called events or intents. For
example, applications can also initiate broadcasts to let other applications know that
some data has been downloaded to the device and is available for them to use, so this
is broadcast receiver who will intercept this communication and will initiate appropriate
action.

There are following two important steps to make BroadcastReceiver works for the system
broadcasted intents −

Creating the Broadcast Receiver.

Registering Broadcast Receiver

There is one additional steps in case you are going to implement your custom intents then you
will have to create and broadcast those intents.

Creating the Broadcast Receiver


A broadcast receiver is implemented as a subclass of BroadcastReceiver class and overriding
the onReceive() method where each message is received as a Intent object parameter.

public class MyReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).s
}
}

Registering Broadcast Receiver


An application listens for specific broadcast intents by registering a broadcast receiver in
AndroidManifest.xml file. Consider we are going to register MyReceiver for system generated
event ACTION_BOOT_COMPLETED which is fired by the system once the Android system has
completed the boot process.

Broadcast-Receiver

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="MyReceiver">

<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>

</receiver>
</application>

Now whenever your Android device gets booted, it will be intercepted by BroadcastReceiver
MyReceiver and implemented logic inside onReceive() will be executed.

There are several system generated events defined as final static fields in the Intent class. The
following table lists a few important system events.

Sr.No Event Constant & Description

android.intent.action.BATTERY_CHANGED
1 Sticky broadcast containing the charging state, level, and other information about the
battery.
android.intent.action.BATTERY_LOW
2
Indicates low battery condition on the device.

android.intent.action.BATTERY_OKAY
3
Indicates the battery is now okay after being low.

android.intent.action.BOOT_COMPLETED
4
This is broadcast once, after the system has finished booting.

android.intent.action.BUG_REPORT
5
Show activity for reporting a bug.

android.intent.action.CALL
6
Perform a call to someone specified by the data.

android.intent.action.CALL_BUTTON
7 The user pressed the "call" button to go to the dialer or other appropriate UI for placing
a call.

android.intent.action.DATE_CHANGED
8
The date has changed.

android.intent.action.REBOOT
9
Have the device reboot.

Broadcasting Custom Intents


If you want your application itself should generate and send custom intents then you will have to
create and send those intents by using the sendBroadcast() method inside your activity class. If
you use the sendStickyBroadcast(Intent) method, the Intent is sticky, meaning the Intent you are
sending stays around after the broadcast is complete.

public void broadcastIntent(View view) {


Intent intent = new Intent();
intent.setAction("com.tutorialspoint.CUSTOM_INTENT");
sendBroadcast(intent);
}

This intent com.tutorialspoint.CUSTOM_INTENT can also be registered in similar way as we have


regsitered system generated intent.
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="MyReceiver">

<intent-filter>
<action android:name="com.tutorialspoint.CUSTOM_INTENT">
</action>
</intent-filter>

</receiver>
</application>

Example
This example will explain you how to create BroadcastReceiver to intercept custom intent. Once
you are familiar with custom intent, then you can program your application to intercept system
generated intents. So let's follow the following steps to modify the Android application we
created in Hello World Example chapter −

Step Description

You will use Android studio to create an Android application and name it as My
1 Application under a package com.example.tutorialspoint7.myapplication as explained
in the Hello World Example chapter.

2 Modify main activity file MainActivity.java to add broadcastIntent() method.

Create a new java file called MyReceiver.java under the package


3
com.example.tutorialspoint7.myapplication to define a BroadcastReceiver.

An application can handle one or more custom and system intents without any
4 restrictions. Every intent you want to intercept must be registered in your
AndroidManifest.xml file using <receiver.../> tag

Modify the default content of res/layout/activity_main.xml file to include a button to


5
broadcast intent.

6 No need to modify the string file, Android studio take care of string.xml file.

7 Run the application to launch Android emulator and verify the result of the changes

You might also like