You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:53:11