q***@dnb.com
q***@dnb.com
  • 发布:2026-03-25 11:08
  • 更新:2026-03-25 11:19
  • 阅读:25

【报Bug】安卓相机权限设置为“每次使用时询问”,获取的权限状态错误,并且不会弹出询问框

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS 26.3

HBuilderX类型: 正式

HBuilderX版本号: 5.03

手机系统: Android

手机系统版本号: Android 15

手机厂商: 小米

手机机型: 小米 14

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

见bug描述

预期结果:

1、app的相机权限设置为“每次使用时询问”后,调用uni.scanCode应弹出“权限询问”。
2、相机权限为通过“每次使用时询问”时,uni.getAppAuthorizeSetting().cameraAuthorized 应为 undetermined。
3、相机权限为通过“不允许”时,plus.navigator.checkPermission('CAMERA') 为 denied。

实际结果:

见bug描述

bug描述:

测试了小米和oppo,将app的相机权限设置为“每次使用时询问”,但调用 uni.scanCode 时并没有弹出询问,而是直接显示无权限。

另外,两种获取权限状态的结果不正确。1、相机权限为通过“每次使用时询问”时,uni.getAppAuthorizeSetting().cameraAuthorized 为 denied。2、相机权限为通过“不允许”时,plus.navigator.checkPermission('CAMERA') 为 undetermined

2026-03-25 11:08 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

需要补充安卓平台的权限配置信息和HBuilderX版本。
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为DCloud官方人员,我对该bug反馈进行如下评审:

一、反馈内容完整性评估

该反馈在分类信息方面较为完整,包含了HBuilderX版本(5.03)、手机系统版本(Android 15)、具体机型(小米14/OPPO)等关键环境信息,这对定位问题有帮助。

但存在以下不足需要补充:

  1. 缺少代码示例:未提供调用uni.scanCode的具体代码片段,以及权限判断的相关代码
  2. 复现步骤过于简略:仅写"见bug描述",建议补充:manifest.json中是否配置了Camera模块、是否添加了android.permission.CAMERA权限、具体是如何设置"每次使用时询问"的(系统设置路径)
  3. 缺少manifest配置信息:从HBuilderX 3.6.11版本开始,Camera模块需要在manifest.json的"App模块配置"中手动勾选,需要确认用户是否已配置

二、技术问题分析

根据知识库相关文档,该反馈涉及的问题可能成立,原因如下:

  1. 关于uni.getAppAuthorizeSetting()返回状态问题
    根据文档,在Android平台上,当未授予android.permission.CAMERA权限时,cameraAuthorized会返回'config error'。但用户反馈在"每次使用时询问"状态下返回'denied',这与文档描述的存在差异。'denied'状态按文档说明表示"请求授权被拒绝,无法再次请求授权",这通常对应永久拒绝,而非"每次询问"状态。

  2. 关于plus.navigator.checkPermission('CAMERA')
    在uni-app Vue3项目中,plus API仍然可用。但返回'undetermined'(未确定)当权限实际为"不允许"时,确实存在状态映射不准确的问题。

  3. 关于uni.scanCode不弹窗
    知识库中有类似案例反馈:"如果不判断相机权限可以正常使用uni.scanCode,如果使用uni.getAppAuthorizeSetting()判断相机权限,返回的结果就是'denied'"。建议尝试先调用权限申请而非仅做状态判断。

三、建议补充的信息

为了进一步确认问题,建议用户提供:

  1. manifest.json中"app-plus" -> "modules"是否配置了Camera模块
  2. manifest.json中是否添加了<uses-permission android:name="android.permission.CAMERA" />权限
  3. 是否使用了权限申请插件(如插件ID:15897)进行拦截处理
  4. 具体的代码调用示例,特别是权限判断与uni.scanCode的调用顺序

四、可能的解决方案

基于知识库信息,建议尝试:

  1. 先通过UTS插件或原生方式申请权限,再调用uni.scanCode,参考插件市场权限申请方案
  2. 检查是否因Android 15的权限模型变更导致,可尝试在manifest中配置权限时添加详细的申请说明
  3. 对于"每次使用时询问"状态,建议先使用uni.authorize或UTS插件主动申请权限,而不是仅依赖状态判断

该反馈涉及Android新版本权限适配问题,建议标记为待确认bug,并需要进一步验证Android 15的兼容性。

内容为 AI 生成,仅供参考
q***@dnb.com

q***@dnb.com (作者)

1、 manifest.json中"app-plus" -> "modules"勾选了Camera模块;2、manifest.json中添加了<uses-permission android:name="android.permission.CAMERA" />权限;3、没有使用了权限申请插件(如插件ID:15897)进行拦截处理

要回复问题请先登录注册