API Level 33构建后自动新增DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION问题咨询
问题解答
1. 该权限与你的广播接收器是否有关?
无关。这个自动生成的DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION是针对动态注册且未显式设置exported=false的广播接收器的保护机制,而你清单里的是静态注册、且明确标记exported="true"的接收器,两者没有关联。
2. 是否需要修改代码?
分两种情况判断:
- 如果你没有动态注册过广播接收器:完全不需要修改,这个自动添加的权限不会影响现有静态接收器,也不会带来安全问题。
- 如果你有动态注册的广播接收器:检查这些动态接收器是否显式设置了
exported=false(如果不需要被其他应用调用)。如果没设置,建议补上该属性,避免依赖系统自动生成的权限。
3. 该权限被自动添加的原因是什么?
从Android 13(API Level 33)开始,系统对动态广播接收器增加了安全限制:若应用动态注册广播接收器但未显式指定exported=false,AGP(Android Gradle插件)会自动生成这个签名级别的自定义权限,并将其绑定到对应的动态接收器上。这样只有与你应用签名一致的应用,才能向该动态接收器发送广播,避免恶意应用的滥用。
这个权限是AGP自动注入到合并清单中的,目的是在开发者未手动配置安全属性时,自动为动态接收器补上安全防护。
内容的提问来源于stack exchange,提问作者nima moradi
相关产品推荐
相关产品推荐

