Android - Broadcast Receivers - Tutorialspoint
Android - Broadcast Receivers - Tutorialspoint
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.
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 1/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
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.
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 2/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
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.
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.
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 3/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
<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 −
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 4/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
Step Description
1 You will use Android studio to create an Android application and name it as My
Application under a package com.example.tutorialspoint7.myapplication as explained in
the Hello World Example chapter.
4 An application can handle one or more custom and system intents without any
restrictions. Every intent you want to intercept must be registered in your
AndroidManifest.xml file using <receiver.../> tag
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
done in the application.
Following is the content of the modified main activity file MainActivity.java. This file can include
each of the fundamental life cycle methods. We have added broadcastIntent() method to
broadcast a custom intent.
package com.example.tutorialspoint7.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
package com.example.tutorialspoint7.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* Created by TutorialsPoint7 on 8/23/2016.
*/
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
Following will the modified content of AndroidManifest.xml file. Here we have added
<receiver.../> tag to include our service:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="com.tutorialspoint.CUSTOM_INTENT">
</action>
</intent-filter>
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 6/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
</receiver>
</application>
</manifest>
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Example of Broadcast"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point "
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_above="@+id/imageButton"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 7/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="Broadcast Intent"
android:onClick="broadcastIntent"
android:layout_below="@+id/imageButton"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Let's try to run our modified Hello World! application we just modified. I assume you had
created your AVD while doing environment set-up. To run the app from Android studio, open one
of your project's activity files and click Run icon from the tool bar. Android Studio installs the
app on your AVD and starts it and if everything is fine with your set-up and application, it will
display following Emulator window −
Now to broadcast our custom intent, let's click on Broadcast Intent button, this will broadcast
our custom intent "com.tutorialspoint.CUSTOM_INTENT" which will be intercepted by our
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 8/9
2/14/2021 Android - Broadcast Receivers - Tutorialspoint
registered BroadcastReceiver i.e. MyReceiver and as per our implemented logic a toast will
appear on the bottom of the the simulator as follows −
You can try implementing other BroadcastReceiver to intercept system generated intents like
system boot up, date changed, low battery etc.
https://www.tutorialspoint.com/android/android_broadcast_receivers.htm 9/9