Primero se debe crear una clase que herede de BroadcastReceiver que será para recibir los mensajes que lleguen por el canal Broadcast
class MyBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.i(TAG, "onReceive $intent")
when (intent?.action) {
Intent.ACTION_POWER_CONNECTED -> handleSomethingHappened()
}
}
}
Registrar el broadcast
Para registrar el broadcast debemos crear una variable del tipo MyBroadcastReceiver
class MainActivity : AppCompatActivity() {
val broadCastReceiver: BroadcastReceiver = MyBroadcastReceiver()
...
Luego para que se pueda recibir los mensajes, se debe registrar el broadcast, se puede registrar a un evento o multiples eventos.
Para registrar un Broadcast a un solo evento
override fun onStart() {
super.onStart()
val filter = IntentFilter()
filter.addAction(Intent.ACTION_POWER_CONNECTED)
broadCastReceiver = MyReceiver()
registerReceiver(broadCastReceiver, filter)
}
Para registrar un Broadcast a multiples eventos
val filter = IntentFilter(Intent.ACTION_POWER_CONNECTED).apply {
addAction(Intent.ACTION_POWER_DISCONNECTED)
addAction(Intent.ACTION_BATTERY_CHANGED)
addAction(Intent.ACTION_BATTERY_LOW)
addAction(Intent.ACTION_BATTERY_OKAY)
}
registerReceiver(broadCastReceiver, filter)
Desregistrar el broadcast
Para desregistrar el broadcast y así parar de recibir mensajes del canal que estaba registrado
override fun onStop() {
super.onStop()
unregisterReceiver(broadCastReceiver)
}