uniapp 自动加了 android.permission.read_media_images 是怎么回事?

我在使用uniapp开发应用时,发现打包后的AndroidManifest.xml中自动添加了android.permission.read_media_images权限,但我并没有在manifest.json中配置这个权限。请问这是什么原因导致的?是uniapp某个模块默认添加的吗?该如何移除这个不需要的权限?

2 回复

uniapp 自动添加 android.permission.read_media_images 权限是因为新版本适配了 Android 13 的媒体权限变更。该权限允许应用读取设备上的图片文件,确保相册选择等功能正常使用。这是框架为兼容性自动处理的,无需手动干预。


在 UniApp 项目中自动添加 android.permission.READ_MEDIA_IMAGES 权限,通常是以下原因导致的:

1. UniApp 框架或插件自动引入

  • HBuilderX 或 CLI 工具:某些版本的构建工具可能自动注入该权限,以支持图片相关功能(如相册访问、图片上传)。
  • 第三方插件:如果项目使用了与图片处理、相册选择等相关的原生插件(如 uni-choose-image),插件可能依赖此权限,构建时会自动添加到配置中。

2. Android 系统权限要求(Android 13+)

  • Android 13(API 33) 开始,Google 用更细粒度的 READ_MEDIA_IMAGES 权限替代了旧的 READ_EXTERNAL_STORAGE 权限,用于访问用户媒体库中的图片。
  • 如果项目的 targetSdkVersion 设置为 33 或更高,且代码中涉及图片读取功能,UniApp 可能会自动适配并添加此权限。

如何检查或修改?

  1. 查看 manifest.json 文件
    检查是否显式配置了该权限。例如:

    {
      "permissions": [
        "android.permission.READ_MEDIA_IMAGES"
      ]
    }
    

    如果未主动添加,可能是插件或构建工具自动注入。

  2. 检查 AndroidManifest.xml
    通过 HBuilderX 打包后,在 /platforms/android/app/src/main/AndroidManifest.xml 中搜索该权限,确认其来源。

  3. 移除不必要的权限

    • 如果不需要图片读取功能,可在 manifest.json 中配置排除:
      {
        "permissions": [
          "!android.permission.READ_MEDIA_IMAGES"
        ]
      }
      
    • 注意:移除后可能导致依赖此权限的功能(如选择图片)异常。

建议

  • 兼容性处理:若应用需在 Android 13+ 设备上正常运行,建议保留此权限,并确保动态权限申请逻辑正确(UniApp 的 uni.authorizeuni.requestPermissions)。
  • 排查插件:检查使用的原生插件文档,确认其权限要求。

根据实际需求调整权限配置即可。

回到顶部