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

Android API 34中调用startActivity崩溃问题求助

Android API 34 启动Activity触发SecurityException问题解决

错误含义

该错误是Android 14(API 34)新增的广播接收器安全限制导致:当注册的广播接收器并非仅用于接收系统广播时,必须显式指定RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED属性。

虽然崩溃栈指向startActivity方法,但问题根源并非启动Activity的代码本身,而是你的App中存在未声明导出属性的广播接收器(静态或动态注册),在API 34的系统安全检查中触发了异常。

解决方法

1. 修复静态注册的广播接收器

检查AndroidManifest.xml中所有<receiver>标签,为其添加android:exported属性,根据业务需求设置为true(允许其他应用触发)或false(仅自身应用可用):

<receiver
    android:name=".MyBroadcastReceiver"
    android:exported="false"> <!-- 按需选择true/false -->
    <intent-filter>
        <!-- 你的广播过滤器规则 -->
    </intent-filter>
</receiver>

2. 修复动态注册的广播接收器

如果使用registerReceiver()动态注册接收器,需要在注册时添加RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED标记:

// Kotlin示例
val myReceiver = MyBroadcastReceiver()
val intentFilter = IntentFilter("com.familiekoning.radionedplus.MY_CUSTOM_ACTION")
// 根据接收器用途选择标记
registerReceiver(myReceiver, intentFilter, RECEIVER_NOT_EXPORTED)

3. 系统广播接收器特殊处理

如果接收器仅用于接收系统广播(如ACTION_BOOT_COMPLETED),可指定RECEIVER_EXPORTED,同时确保intent-filter仅匹配系统广播动作。

补充说明

API 34系统在启动Activity时,会校验App内所有已注册组件的安全配置,只要有一个广播接收器不符合属性要求,就会抛出该SecurityException,因此看似启动Activity崩溃,实际是广播接收器的配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:27:20