接收广播
动态注册
- 新建一个类继承自BroadcastReceiver
- 重写onReceive()
inner class ForceOfflineReceiver: BroadcastReceiver(){
override fun onReceive(p0: Context?, p1: Intent?) {
}
}
静态注册
- android:exported="true"
是否允许这个广播接收者接收本程序以外的广播。
- 添加intent-filter,并添加相应的action
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.broadcasttest.MY_BROADCAST" />
</intent-filter>
</receiver>
- 添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
发送自定义广播
发送标准广播
- 在Intent中传入想要发送的广播
val intent = Intent("com.example.broadcastbestpractice.FORCE_OFFLINE")
- 设置包名(否则静态注册的BroadcastReceiver将无法接收这条广播)
intent.setPackage(packageName)
- 发送广播
sendBroadcast(intent)
发送有序广播
sendOrderedBroadcast(intent, null)
- 设定BroadcastReceiver的先后顺序
<intent-filter android:priority="100">
- 截断广播
abortBroadcast()