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.
We have two ways to register the Broadcast Events
Static Broadcast Receivers: To create static Broadcast receivers we will register them in manifest file
<receiver android:name=".TestBroadcastReceiver" android:exported="true"> |
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) } |
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 :
|
|
|
|
854 Views |