Skip to main content

Broadcast Receivers

     Broadcast Receivers


A broadcast receiver is an Android component which allows to register and listen for device orientation changes like sms messsage recieved , phone call recieved/pick/cut ,battery status changed, the Wi-Fi came on.  


broadcast


Android operating system and even other applications time to time broadcast messages about things that are happening like sms messsage recieved , phone call recieved/pick/cut ,battery status changed, the Wi-Fi came on.
With the help of broadcast receiver you will catch Android operating system specific events and then you can code your application for that event.




Where we use:
             Example:
                   We want when any call will come then we will save call details in our sqlite database.
    
                   How to do :

                        We will define a broadcast receiver which listens to telephone state changes. If the  phone receives a phone call then our receiver will be notified and save call data to sqlite database.




How to create broadcast receiver :

There are two way to register and create a broadcast receiver
First Way :
     Register broadcast receiver Via the AndroidManifest.xml file.

      <receiver android:name="IncomingCall"> 
                    <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE" />
                    </intent-filter>
        </receiver>

         When android.intent.action.PHONE_STATE  Event will fire ( call recieved/pick/end ), then onReceive method in IncomingCall.java file will automaticaly call.
          Now Create IncomingCall.java file

                  // Reciever class which extends BroadcastReceiver
                     public class IncomingCall extends BroadcastReceiver {
                   
                                public void onReceive(Context context, Intent intent) {
                              
                                     // Phone call state change then this method will automaticaly called
                                   
                                }
                        }
             

  Second Way :
           Register broadcast receiver Via dynamically ( Run time )
               // Create reciever object
                private BroadcastReceiver the_receiver = new IncomingCall();
                       
                // Set When broadcast event will fire.
                private IntentFilter filter = new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);
                          
                         // Register new broadcast receiver
                         this.registerReceiver(the_receiver, filter);
          
                         // Reciever class which extends BroadcastReceiver
                         public class IncomingCall extends BroadcastReceiver {
                   
                                public void onReceive(Context context, Intent intent) {
                              
                                     // Phone call state change then this method will automaticaly called
                              
                                }
                          }

Create Custom events and broadcast receiver :

Define BroadcastReceiver in  AndroidManifest.xml file to a Custom action.
Custom action - define any user specific name , event will broadcast with that name.

              <receiver android:name="MyReceiver" >
                    <intent-filter>
                        <action android:name="ax.androidexample.mybroadcast" />
                    </intent-filter>
                </receiver>

Create reciever class :

                     // Reciever class which extends BroadcastReceiver
                     public class MyReceiver extends BroadcastReceiver {
                   
                                public void onReceive(Context context, Intent intent) {
                              
                                     // Phone call state change then this method will automaticaly called
                              
                                }
                          }

Send Broadcast event :
   Create new intent and broadcast it
                        Intent intent = new Intent();
                        intent.setAction("ax.androidexample.mybroadcast");
                        sendBroadcast(intent);

See One other way to define Receiver ( Define as INNER Class) :


          public class Android Example extends Activity {
  
                            private BroadcastReceiver the_receiver = new BroadcastReceiver(){
                          
                                    @Override
                                    public void onReceive(Context c, Intent i) {
                                  
                                    }
                            };
                            // Set When broadcast event will fire.
                            private IntentFilter filter = new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);
                          
                            @Override
                            public void onCreate(Bundle savedInstanceState) {
                                 super.onCreate(savedInstanceState);
                                 setContentView(R.layout.main);
                            }
                          
                            @Override
                            protected void onResume() {
                          
                                // Register reciever if activity is in front
                                this.registerReceiver(the_receiver, filter);
                                super.onResume();
                            }
                          
                            @Override
                            protected void onPause() {
                          
                                 // Unregister reciever if activity is not in front
                                 this.unregisterReceiver(the_receiver);
                                 super.onPause();
                            }
                          
                    }     

NOTE:

After the onReceive() method completed, BroadcastReceiver has finished, the Android system can recycle the BroadcastReceiver.

So you cannot perform any asynchronous operation in the onReceive() method. If you have potentially long running operations( Request to server, get contacts etc.. ) you should call / create a service for that.

visit our website:- www.deftminds.com



Comments

Popular posts from this blog

BottomNavigationView

In this tutorial we will learn, how to add a bottom navigation to your activity and use it to switch between different fragments. We will fill our BottomNavigationView with 3 menu items and then check which item was selected with the OnNavigationItemSelectedListener interface and a switch statement. We will then create the appropriate fragment and display it in a FrameLayout with help of the getSupportFragmentManager, beginTransaction and replace methods. Link & Dependencies:- developer.android.com/topic/libraries/support-library/packages.html#design Add a directory in res folder and name it as menu. After adding menu folder in res folder add a xml file and name it bottom_navigation.xml. <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_home_black_24dp" android:titl...

UPI Payment Integration Android

                                 In this tutorial we will learn how to integrate upi payment gateway in our app. In gradle file add this dependency:- // EasyUpiPayment Library implementation 'com.shreyaspatil:EasyUpiPayment:3.0.0' Note:- Minimum Sdk must not be below 19 In MainActivity.java class file add these lines of codes:- package com.deftskill.upiintegration; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; import com.shreyaspatil.easyupipayment.EasyUpiPayment; import com.shreyaspatil.easyupipayment.listener.PaymentStatusListener; import com.shreyaspatil.easyupipayment.model.PaymentApp; import com.shreyaspatil.easyupipayment.model.TransactionDetails; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements PaymentStatusListener {     private EasyUpiPayment easyUpiPayment; ...

Clean Code in 2026: Why "Good Enough" Isn't Good Enough Anymore

Let’s be honest: we’ve all been there. You open a file you wrote six months ago, squint at the screen, and think, "Who wrote this, and what on earth were they trying to do?" In 2026, the stakes for writing Clean Code are higher than ever. With AI generating half our boilerplate and systems becoming more distributed by the second, "messy" code isn't just an eyesore—it’s a massive technical liability. Clean code isn't about being a perfectionist; it’s about being a professional who respects their future self (and their teammates). What Exactly is Clean Code? It’s not just about pretty indentation or using a trendy linter. Clean code is a philosophy. It’s the art of writing software that is readable, resilient, and easy to change. If your code is "clever" but takes three senior engineers an hour to decipher, it isn't clean. Clean code should read like well-written prose—it tells a story about what the system is doing, without the plot holes. W...