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

Android:在BroadcastReceiver内发送广播无响应问题咨询

问题解答

Android完全允许从一个BroadcastReceiver内部发送广播触发另一个BroadcastReceiver,不存在场景限制,你的问题是代码和Manifest里的细节错误导致的,具体排查和修复点如下:

  • XML语法错误导致接收器未注册
    你提供的Manifest代码中两个<receiver>标签都存在语法错误:

    • .CalendarProviderBroadcastReceiver的android:exported="true"行末尾缺少闭合的>
    • .AlarmReceiver的android:exported="false"行末尾同样缺少闭合的>
      这种错误会导致Android系统无法正确解析Manifest,AlarmReceiver根本没被系统注册,自然不会触发onReceive方法。修正后的代码示例:
    <receiver android:name=".CalendarProviderBroadcastReceiver"
              android:exported="true">
        <intent-filter>
            <action android:name="com.example.SOMETHING.TEST" />
        </intent-filter>
    </receiver>
    
    <receiver android:name=".AlarmReceiver"
              android:exported="false">
        <intent-filter>
            <action android:name="com.example.SOMETHING.REMIND_ME" />
        </intent-filter>
    </receiver>
    
  • Action字符串拼写不匹配
    Manifest里AlarmReceiver的action写的是com.exmaple.SOMETHING.REMIND_ME,其中exmaple是拼写错误(正确应为example)。虽然你用setClass指定组件属于显式广播,不依赖action匹配,但如果后续改用隐式广播,或者AlarmReceiver的onReceive里有判断action的逻辑,都会出现问题,建议统一修正拼写。

  • 显式广播的验证建议
    你当前用intent.setClass(context, AlarmReceiver.class)发送的是显式广播,只要类名正确、接收器已注册就会触发。可以在AlarmReceiver的onReceive方法开头添加日志输出,或者在发送广播后打印日志,确认广播是否正常发出、接收器是否被调用。

内容的提问来源于stack exchange,提问作者mohammad fakhraee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:42:38