自定义BroadcastReceiver无法接收自定义Action广播的排查求助
问题分析与解决方案
1. 修复日志打印代码错误
你的Log.d调用语法不符合Android标准日志API要求,当前Lambda写法不会生成有效日志输出。修改onReceive方法中的日志代码:
override fun onReceive(context: Context?, intent: Intent?) { if(intent?.action == ACTION_NAME){ Log.d("BogusBroadcastReceiver", "Received Broadcast!!") } }
2. 适配Android 8.0+的隐式广播限制
从Android 8.0(API级别26)开始,系统禁止清单声明的BroadcastReceiver接收隐式广播(系统白名单内的广播类型除外)。你当前通过adb发送的是隐式广播,因此无法触发清单中注册的接收器。
解决方法是发送显式广播,指定目标应用或接收器信息:
- 方式一:指定接收器完整类名(替换
com.myapp为你的应用实际包名):adb shell am broadcast -a com.myapp.intent.BOGUS_ACTION -n com.myapp/.test.BogusBroadcastReceiver - 方式二:指定应用包名:
adb shell am broadcast -a com.myapp.intent.BOGUS_ACTION -p com.myapp
3. 验证清单中接收器路径正确性
确认BogusBroadcastReceiver类确实位于.test子包下。如果类在应用根包中,清单中的android:name需改为.BogusBroadcastReceiver,而非.test.BogusBroadcastReceiver。
4. 确保应用状态正常
- 卸载并重新安装应用,保证清单中的接收器声明已被正确打包到APK中。
- 至少启动一次应用(应用处于停止状态时,清单注册的接收器会被系统禁用)。
完成以上步骤后,重新测试广播发送,即可触发接收器并看到日志输出。
内容的提问来源于stack exchange,提问作者M Rajoy
相关产品推荐
相关产品推荐

