广播用法总结

97 阅读1分钟

接收广播

动态注册

  • 新建一个类继承自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()