发送广播
标准广播
标准广播的发送很简单,首先需要创建一个intent来确定发送的广播内容,然后调用sendBroadcast方法进行发送就可以了。
val intent=Intent("com.example.broadcast.OTO")
intent.setPackage(packageName)
sendBroadcast(intent)
有序广播
发送有序广播,有序广播需要在标准广播的基础上加个参数,这个增加的null代表了接收的权限。
val intent=Intent("com.example.broadcast.OTO")
intent.setPackage(packageName)
sendBroadcast(intent,null)
接收广播
编写接收器
接收广播时需要注册广播的接收器,还需要进行接收器的注册和取消注册。接收器中作出对收到广播后的处理,重写onReceive方法,这里弹出一个toast表示收到广播。
inner class MyBroadcast():BroadcastReceiver(){
override fun onReceive(p0: Context?, p1: Intent?) {
Toast.makeText(this@MainActivity, "receive the intent named OTO", Toast.LENGTH_SHORT).show()
}
}
注册接收器
想要接收到广播,首先需要注册接收器,需要在界面初始化的时候进行注册,在注册时首先需要创建一个intentFilter来确定需要接收的广播,然后进行注册,在界面销毁时进行取消注册。
val receiver=MyBroadcast()
override fun initData() {
val intent=IntentFilter()
intent.addAction("com.example.broadcast.OTO")
registerReceiver(receiver,intent)
viewBinding?.button?.setOnClickListener(this)
}
override fun onDestroy() {
unregisterReceiver(receiver)
super.onDestroy()
}