Broadcast Receiver in Kotlin - How to Register Broadcast Receiver in Activity Dynamically

Published April 14, 2022

Broadcast Receiver is the one of building blocs of Android system. These are the System wide events which will generally trigger like on Phone Call, On Message Receive, on Battery Changes... To handle any of these events inside android application we will use Broadcast Receivers by registering them.

  • Create Broadcast Receiver
  • How to Register Broadcast Receiver in Activity
  • How to read data from Broadcast Receiver
  • Unregister Broadcast receiver

 

We have two ways to register the Broadcast Events

  • Static Broadcast Receivers
  • Dynamic Broadcast Receivers.

Static Broadcast Receivers: To create static Broadcast receivers we will register them in manifest file

<receiver android:name=".TestBroadcastReceiver"  android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
               
            </intent-filter>
        </receiver>


        
To add receivers in manifest file we will use <receiver> tag.
The <intent-filter> tag will set the action when we need to trigger the events. In the above code the receiver will trigger upon boot completion of the device.

Dynamic Broadcast Receivers: This type of Broadcast receivers we will register inside Activity or fragment. We can unregistered Receiver on destroy the current activity or Fragment.

Let create a Dynamic Broadcast Receiver

package com.rrtutors.boradcastreciverkotlin

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast

class DynamicBroadCastReceiver: BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {

        var count=intent!!.getIntExtra("count",0)
        Toast.makeText(context,"Current Count "+count,Toast.LENGTH_SHORT).show()
    }
}


In the above class we are tracking the count from the activity.

Let register broadcast receiver in activity

package com.rrtutors.boradcastreciverkotlin

import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle

import android.widget.Button
import androidx.appcompat.app.AppCompatActivity

class MainActivityReceiver: AppCompatActivity() {
    lateinit  var dynamicBroadCastReceiver: DynamicBroadCastReceiver
    var count=0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dynamic_receiver)
        dynamicBroadCastReceiver= DynamicBroadCastReceiver()
        var intentFilter=IntentFilter("com.DynamicBroadCastReceiver")
        registerReceiver(dynamicBroadCastReceiver,intentFilter);
        var btn=findViewById<Button>(R.id.btn)
        btn.setOnClickListener {

            var intent=Intent("com.DynamicBroadCastReceiver")
            intent.putExtra("count",count++)
            sendBroadcast(intent)
        }
    }

    override fun onDestroy() {
        super.onDestroy()
        unregisterReceiver(dynamicBroadCastReceiver)
    }

}

 

Send Broadcast Dynamically
In the above activity we registered receiver by set the intent filter by

to send broadcasts we called sendBroadcast() method on button click

btn.setOnClickListener {

    var intent=Intent("com.DynamicBroadCastReceiver")
    intent.putExtra("count",count++)
    sendBroadcast(intent)
}

 

How to Unregistered Broadcast Receiver

In the above activity we unregistered receiver on onDestroy() method

override fun onDestroy() {
    super.onDestroy()
    unregisterReceiver(dynamicBroadCastReceiver)
}

 

Kotlin Broadcast Receiver

 

 

Register Broadcast receiver in Activity

 

Conclusion: In this Kotlin broadcast receiver we covered what is broadcast receiver, how to register broadcast receiver in activity and unregistered receiver and read data from Broadcast receiver.

 

Article Contributed By :
https://www.rrtutors.com/site_assets/profile/assets/img/avataaars.svg

854 Views