一、这里我用adb发送广播应用收不到的问题,提示:BroadcastQueue: Background execution not allowed: receiving Intent { act=,我这里是android11 MTK平台。
二、出现这个问题的原因是 Android O版本以后google对隐式广播(Implicit Broadcast)的限制更加严格了,这就导致了apk在O版本之前的版本上好用,在之后的版本上达不到预期的效果。
三、那就修改成显式广播发送。
1、AndroidManifest.xml里面可以看到包名和类,这里是静态注册。
2、广播接收文件。
3、加上-n的选项后面加上包名和类名显式发送,我这里是adb shell am broadcast -n com.mediatek.batterywarning/.BatteryWarningReceiver -a "mediatek.intent.action.BATTERY_WARNING"
4、发送广播。
5、log上看系统app可以接收到这个广播了。
6、可以看到系统收到广播后跳出相应的界面。
四、参考文章:
Background execution not allowed: receiving Intent 问题解决_little_monkey_92的博客-CSDN博客
https://www.freesion.com/article/99441015950/
解决Android 8.0及以上系统接收不到广播的问题 - 简书
Android 通过adb shell am broadcast发送广播(示例代码)_136.la
android隐式和显式广播,Android Intent详细介绍及使用说明(显式、隐式和值传递)..._欧阳kang的博客-CSDN博客