DOMI_
DOMI_
  • 发布:2026-04-15 15:59
  • 更新:2026-04-15 19:21
  • 阅读:54

关于uni.scanCode里相册权限问题

分类:uni-app

uni.scanCode里有个默认的选择相册,使用的好像是chooseImage类似的api,只要有相册按钮,Google就会因为权限问题拒绝,市场上也有很多扫码插件,也是有这个相册权限问题!一直有个问题不明白,既然uni.chooseMedia不需要权限问题,为什么扫码api里不使用chooseMedia去选择照片呢?有没有人懂的,求解答。

2026-04-15 15:59 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

关于 uni.scanCode 的相册权限问题,这确实是 Google Play 上架时常见的审核问题。根据知识库内容,为你分析并提供解决方案:

问题根源

在 App 端,uni.scanCode 默认的相册选择功能使用的是需要申请相册权限的方式(类似 custom 模式)。根据 Google Play 照片和视频权限政策,应用需要向 Google 证明获取相册权限的合理性,否则会被拒绝上架。

解决方案

1. 禁止相册选择(仅相机扫码)

如果业务允许只使用相机扫码,可通过设置 onlyFromCamera 参数来避免相册权限问题:

uni.scanCode({  
  onlyFromCamera: true,  // 禁止从相册选择,只允许相机扫码  
  success: (res) => {  
    console.log(res.result)  
  }  
})

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

2. 使用系统方式选择图片(推荐)

对于 uni-app 项目,可以使用插件 uni-chooseSystemMedia 来绕过权限限制。该插件使用系统 API 选择图片,不需要申请 READ_MEDIA_IMAGES 等权限

import { chooseSystemMedia } from "@/uni_modules/uni-chooseSystemMedia"  

// 先使用系统选择器选择图片  
chooseSystemMedia({  
  count: 1,  
  mediaType: ['image'],  
  success: (e) => {  
    // 获取图片路径后,使用其他方式解析二维码  
    const filePath = e.filePaths[0]  
    // 调用二维码解析逻辑...  
  }  
})

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

使用该插件时,需要在 manifest.json 中移除相关权限:

"android": {  
  "permissions": [],  
  "removePermissions": [  
    "android.permission.READ_MEDIA_IMAGES",  
    "android.permission.READ_MEDIA_VIDEO"  
  ]  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

3. uni-app x 的 system 方式

如果是 uni-app x 项目,uni.chooseImage 支持 albumMode: 'system' 参数,使用系统选择器无需申请权限,但 uni.scanCode 底层是否采用类似机制,知识库中暂无相关实现细节。

关于 chooseMedia 的疑问

你提到为什么 uni.scanCode 不使用 chooseMedia 来选择照片以避免权限问题,知识库中暂未找到关于此设计决策的具体说明

从现有资料来看,uni.chooseMediauni.chooseImage 在 App 端同样存在 customsystem 两种模式之分。如果 uni.scanCode 底层使用的是 custom 模式,就会触发权限申请;而使用 system 模式(系统选择器)则不会。

建议在实际开发中,如果 Google Play 审核因权限问题拒绝,优先考虑使用 onlyFromCamera: true 仅启用相机,或结合 uni-chooseSystemMedia 插件自定义扫码流程。

内容为 AI 生成,仅供参考
4***@qq.com

4***@qq.com

https://ext.dcloud.net.cn/plugin?id=27546 可以看看这个uts原生插件,我刚做完google上架之前也是遇到这个问题,就写了一个,google上架我是一次就过了

要回复问题请先登录注册