Listen to Phone Restarts on Android

When a phone is restarted the system broadcasts ACTION_BOOT_COMPLETED to all the apps that have the RECEIVE_BOOT_COMPLETED permission. In this article, we will learn how to make our app listen to phone restarts.

1) Add permission to the AndroidManifest.xml file.

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

2) Create a broadcast receiver and add ACTION_BOOT_COMPLETED intent filter to receive the broadcasts.

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

public class BootCompletedReceiver extends BroadcastReceiver {
    private static final String TAG = BootCompletedReceiver.class.getSimpleName();

    public void onReceive(Context context, Intent intent) {
        if (intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
            Log.i(TAG, "Boot Completed")

That's it, the onReceive is called whenever the device is restarted. We can start the alarms or start a foreground service, JobIntentService, WorkManger for long running tasks. The lifespan of a broadcast receiver is 10 seconds, so, avoid any time consuming tasks in the onReceive method.

There is another broadcast similar to ACTION_BOOT_COMPLETED that notifies the apps that the device is restarted, its called ACTION_LOCKED_BOOT_COMPLETED. There are few differences between both the broadcasts.

When ACTION_LOCKED_BOOT_COMPLETED is broadcasted on 24+ versions, the device is started but the screen is still in the locked state and when ACTION_BOOT_COMPLETED is broadcasted, the device is started and the screen is unlocked by the user.

Until the screen is unlocked (i.e., when ACTION_LOCKED_BOOT_COMPLETED is broadcasted and ACTION_BOOT_COMPLETED is yet to be broadcasted), the apps can only access device protected storage. So, take these limitations into consideration when listening for ACTION_BOOT_COMPLETED and ACTION_LOCKED_BOOT_COMPLETED.

Popular posts from this blog

Add Spacing to Recycler View Linear Layout Manager Using Item Decoration

How to Set an Android App as a Default Dialer

How to Change Material Chip Text Size, Text Style and Font

How to Read Metadata from AndriodManifest File

Create Assets Folder, Add Files and Read Data From It