React Native应用因QUERY_ALL_PACKAGES权限被拒,权限来源不明求助
解决React Native应用因QUERY_ALL_PACKAGES权限被拒审问题
排查权限来源
- 第三方依赖注入:该权限大概率是项目中的第三方依赖自动添加的,而非你的代码直接声明。在项目根目录执行以下命令搜索所有依赖的清单文件:
cd android && grep -r "QUERY_ALL_PACKAGES" . - 查看合并后清单:运行
./gradlew processDebugManifest,然后在app/build/intermediates/merged_manifests/debug/AndroidManifest.xml中查看完整的合并清单,这里会显示所有被依赖注入的权限。
- 第三方依赖注入:该权限大概率是项目中的第三方依赖自动添加的,而非你的代码直接声明。在项目根目录执行以下命令搜索所有依赖的清单文件:
移除权限并替换为
声明 - 主动移除权限:在你的主
AndroidManifest.xml中添加tools:remove标签移除该权限,注意要先在根标签添加xmlns:tools="http://schemas.android.com/tools":<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 移除依赖注入的QUERY_ALL_PACKAGES权限 --> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:remove="android:name"/> <!-- 声明需要访问的特定应用 --> <queries> <package android:name="com.example.targetapp"/> <!-- 补充所有你的应用需要交互的第三方应用包名 --> </queries> </manifest>
- 主动移除权限:在你的主
验证修改有效性
- 重新执行
./gradlew processDebugManifest,检查合并后的清单文件,确认QUERY_ALL_PACKAGES权限已被移除,元素正确添加。 - 打包测试版本,验证应用核心功能是否正常,避免因包可见性限制导致依赖功能失效。
- 重新执行
内容的提问来源于stack exchange,提问作者essveeyel
相关产品推荐
相关产品推荐

