uniapp 无法去掉 read_media_images/read_media_video 权限怎么办
在uniapp开发中,Android平台打包后自动添加了READ_MEDIA_IMAGES和READ_MEDIA_VIDEO权限,但在manifest.json里已删除这些权限配置。尝试过修改AndroidManifest.xml文件、清理项目重新打包,甚至配置了permission节点强制移除,但安装时仍然显示这两个权限。请问如何彻底去除这些默认权限?是否有其他隐藏配置或HBuilderX的编译策略需要调整?
在UniApp中,如果无法移除READ_MEDIA_IMAGES和READ_MEDIA_VIDEO权限,可以尝试以下方法:
-
检查HBuilderX版本:升级到最新版,可能已优化权限处理。
-
修改manifest.json:
- 在
app-plus->modules中删除相关权限配置。 - 或在
android节点下添加:"permissions": [ "<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" tools:node=\"remove\" />", "<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" tools:node=\"remove\" />" ]
- 在
-
使用原生配置:
- 在
nativeplugins中创建原生插件,自定义AndroidManifest.xml移除权限。
- 在
-
云打包设置:
- 在打包时勾选“自定义权限”,手动删除不需要的权限。
-
检查插件:某些第三方插件可能强制添加权限,尝试更新或替换插件。
如果仍无法解决,可能是UniApp底层依赖的模块需要这些权限,建议根据实际需求评估是否必要保留。
在UniApp中,READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO 权限是Android 13(API 33)及以上系统新增的媒体文件访问权限,用于替代之前的 READ_EXTERNAL_STORAGE 权限。如果您的应用不需要访问媒体文件,但构建后仍自动包含这些权限,可以尝试以下方法移除:
1. 检查并修改 manifest.json
在 manifest.json 的 App权限配置 中,确保未勾选任何媒体文件相关权限(如“相册”或“存储”权限):
{
"permissions": {
"android": [] // 确保未添加媒体权限
}
}
2. 检查使用的插件或模块
某些UniApp原生插件可能自带这些权限。检查 nativeplugins 目录下的插件配置,或尝试移除可疑插件测试。
3. 自定义 AndroidManifest.xml
在 nativeResources/Android/src/main/AndroidManifest.xml 中添加以下代码,显式移除权限:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
需确保文件顶部已声明 xmlns:tools="http://schemas.android.com/tools"。
4. 检查 targetSdkVersion
若 targetSdkVersion 设置为 33 或更高,系统会强制要求声明媒体权限。可暂时降低至 32(不推荐长期使用):
{
"app": {
"android": {
"targetSdkVersion": 32
}
}
}
5. 重新打包并清理缓存
- 删除
unpackage、android等构建目录 - 重启 HBuilderX 或重新运行
npm run build:app-plus
注意事项:
- 移除权限后,应用将无法访问用户媒体文件,需确保功能不受影响
- 若使用云打包,请确认自定义配置已正确提交
通过以上步骤,通常可有效移除不需要的媒体权限。若问题持续,请检查依赖的SDK或提交详细环境信息至UniApp官方论坛寻求帮助。

