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

Android API 34 Security Exception求助:需指定RECEIVER_EXPORTED/NOT_EXPORTED

问题解决:Android API34下广播接收器崩溃

问题根源

你遇到的崩溃是Android 14(API34)新增的广播接收器安全限制导致的:动态注册非系统专属的广播接收器时,必须明确指定该接收器是否允许接收其他应用的广播(即设置RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED标志),而你当前的代码没有添加这个参数,所以触发了SecurityException。你之前修改Activity的android:exported属性是无效的,因为问题出在动态广播注册,和Activity的导出设置无关。

解决方案

修改LoginActivity中onResume方法里的广播注册代码,添加对应的标志:

情况1:该广播仅接收当前应用内部发送的消息(推荐,更安全)

@Override
protected void onResume() {
    super.onResume();
    // 添加RECEIVER_NOT_EXPORTED标志,禁止接收其他应用的广播
    LoginActivity.this.registerReceiver(mReceiver, new IntentFilter("com.result.notification"), Context.RECEIVER_NOT_EXPORTED);
}

情况2:需要接收其他应用发送的该广播

@Override
protected void onResume() {
    super.onResume();
    // 添加RECEIVER_EXPORTED标志,允许接收其他应用的广播
    LoginActivity.this.registerReceiver(mReceiver, new IntentFilter("com.result.notification"), Context.RECEIVER_EXPORTED);
}

补充说明

  • 这个限制仅在API34及以上生效,所以你的应用在API33环境下能正常运行。
  • 优先选择RECEIVER_NOT_EXPORTED,除非你确实需要接收其他应用的广播,这样能提升应用的安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:22:34