uniapp 无法去掉 read_media_images/read_media_video 权限怎么办

在uniapp开发中,Android平台打包后自动添加了READ_MEDIA_IMAGESREAD_MEDIA_VIDEO权限,但在manifest.json里已删除这些权限配置。尝试过修改AndroidManifest.xml文件、清理项目重新打包,甚至配置了permission节点强制移除,但安装时仍然显示这两个权限。请问如何彻底去除这些默认权限?是否有其他隐藏配置或HBuilderX的编译策略需要调整?

2 回复

在UniApp中,如果无法移除READ_MEDIA_IMAGESREAD_MEDIA_VIDEO权限,可以尝试以下方法:

  1. 检查HBuilderX版本:升级到最新版,可能已优化权限处理。

  2. 修改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\" />"
      ]
      
  3. 使用原生配置

    • nativeplugins中创建原生插件,自定义AndroidManifest.xml移除权限。
  4. 云打包设置

    • 在打包时勾选“自定义权限”,手动删除不需要的权限。
  5. 检查插件:某些第三方插件可能强制添加权限,尝试更新或替换插件。

如果仍无法解决,可能是UniApp底层依赖的模块需要这些权限,建议根据实际需求评估是否必要保留。


在UniApp中,READ_MEDIA_IMAGESREAD_MEDIA_VIDEO 权限是Android 13(API 33)及以上系统新增的媒体文件访问权限,用于替代之前的 READ_EXTERNAL_STORAGE 权限。如果您的应用不需要访问媒体文件,但构建后仍自动包含这些权限,可以尝试以下方法移除:

1. 检查并修改 manifest.json

manifest.jsonApp权限配置 中,确保未勾选任何媒体文件相关权限(如“相册”或“存储”权限):

{
  "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. 重新打包并清理缓存

  • 删除 unpackageandroid 等构建目录
  • 重启 HBuilderX 或重新运行 npm run build:app-plus

注意事项:

  • 移除权限后,应用将无法访问用户媒体文件,需确保功能不受影响
  • 若使用云打包,请确认自定义配置已正确提交

通过以上步骤,通常可有效移除不需要的媒体权限。若问题持续,请检查依赖的SDK或提交详细环境信息至UniApp官方论坛寻求帮助。

回到顶部