背景
项目迁移到Android Q之后,发现之前的各种广播都收不到了,包括开机广播、自定义广播等。会提示错误:Background execution not allowed: receiving Intent { act=izis_MinaPushServiceOpen_kyteach flg=0x10 (has extras) } to cn.izis.kyteach/.receiver.DataReceiverPublic
后来了解到在Android 8.0之后所有的广播都需要动态注册,也就是以前的manifest文件中的静态广播不生效。
代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
registerReceiver();
}
public void registerReceiver(){
m_adbReceiver = new AdbBootBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.BROADCAST_FORM_ADB");
registerReceiver(m_adbReceiv