升级RN 0.72.5后react-native-push-notification构建权限缺失错误
React Native 0.72.5构建报错:缺少BROADCAST_CLOSE_SYSTEM_DIALOGS权限的解决方向
问题本质
报错指向代码调用context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))时缺少对应权限,这个权限在Android 12(API 31)及以上属于签名级权限,普通应用无法正常申请使用。
可行解决路径
1. 清理不必要的系统广播调用
- 排查自研代码,若存在该广播调用逻辑,替换为应用内弹窗关闭的实现,避免调用系统级广播。
- 检查第三方依赖,确认是否由某个库触发该调用。尝试将依赖升级至适配RN 0.72.5的最新版本,无法升级则考虑替换为功能类似的兼容库。
2. 低版本兼容的权限声明(仅API 30及以下有效)
若必须保留该调用,可在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS" />
注意:Android 12+系统中该声明无效,此权限仅对系统应用或签名匹配的开放应用开放。
3. 核对RN升级后的构建配置
RN 0.72.x升级可能伴随Android SDK版本提升:
- 检查应用级
build.gradle中的compileSdkVersion、targetSdkVersion是否升至33或更高,若为是,需调整代码逻辑适配更严格的权限规则。 - 确认根级
build.gradle中RN相关插件、依赖版本与0.72.5完全匹配,避免版本冲突。
4. 临时忽略lint错误(不推荐长期使用)
若暂时无法修改代码,可在应用级build.gradle中添加lint规则跳过该错误:
android { lintOptions { disable 'MissingPermission' } }
此为临时救急方案,长期使用会掩盖其他潜在权限问题。
内容的提问来源于stack exchange,提问作者Aaron Harker
相关产品推荐
相关产品推荐

