梦尋Junjie
梦尋Junjie
  • 发布:2026-09-20 09:29
  • 更新:32 秒前
  • 阅读:41

小米审核问题, 在调用扫码时,如果选择从相册里面选择, 图片直接弹出授权, 没有蒙层权限提醒,惨遭驳回

分类:uni-app

我在提交小米,审核,现在要在调用相机.相册,等权限信息都需要我们自行先弹窗进行权限说明, 然后才能调用.

现在有个问题, 使用扫码功能会有两个步骤,

  1. 调用相机
  2. 访问相册

我可以在调用相机之前进行弹框提示,
但是 进入扫码页面之后, 用户选择从相册里面选择图片, 会牵涉到访问相册, 这时候小米要求的是还需要进行先行提示,

这个我们操作不了啊~~~

小米返回的原因

审核未通过
隐私政策链接和APP内隐私政策
APP运行时,对应的相关产品或服务向用户索取权限,未提供自定义弹窗或蒙层同步告知索取权限目的无帮助

附件 里面有视频,

天菩萨,这不是欺负我们这种老实人嘛!!

2026-09-20 09:29 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

看到这个问题,确实挺让人头疼的。uni.scanCode 在 App 端是一个完整的原生页面,进入后用户点击"相册"时,是原生层直接调用系统相册,js 层无法插入自定义弹窗或蒙层,这是目前的实现机制。

根据知识库中类似案例的解决方案,给你几个可行的处理方案:

方案一:使用 plus.nativeObj.View 做全局置顶提示层(已验证通过审核)

这是 ask 社区中多位开发者验证过、能通过小米审核的方案。核心思路是在调用 uni.scanCode 之前,先创建一个全局置顶的原生提示层,这样即使用户在扫码界面点击"相册",提示层依然显示在屏幕顶部,满足"同步告知"的要求。

// #ifdef APP-PLUS  
// 在调用扫码前创建提示层  
function showPermissionTip() {  
    // 创建顶部提示条  
    const view = new plus.nativeObj.View('permTip', {  
        top: '0px',  
        left: '0px',  
        width: '100%',  
        height: '80px',  
        backgroundColor: 'rgba(0,0,0,0.7)'  
    });  

    // 添加文字说明  
    view.draw([  
        {  
            tag: 'font',  
            id: 'text',  
            text: '扫码功能需要访问相册以选择图片识别,以及使用相机进行扫描',  
            position: {  
                top: '25px',  
                left: '15px',  
                width: '100%',  
                height: 'wrap_content'  
            },  
            textStyles: {  
                color: '#FFFFFF',  
                size: '14px'  
            }  
        }  
    ]);  

    view.show();  

    // 3秒后自动关闭,或扫码完成后关闭  
    setTimeout(() => {  
        view.close();  
    }, 3000);  

    return view;  
}  

// 调用扫码  
function startScan() {  
    const tipView = showPermissionTip();  

    uni.scanCode({  
        success: (res) => {  
            console.log('扫码结果:', res);  
            tipView.close(); // 关闭提示层  
        },  
        fail: (err) => {  
            tipView.close();  
        },  
        complete: () => {  
            // 确保提示层被关闭  
            setTimeout(() => {  
                tipView.close();  
            }, 3000);  
        }  
    });  
}  
// #endif

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

关键点:这个提示层在调用 uni.scanCode 时就创建,并且置顶显示,即使用户点击了扫码界面里的"相册"按钮,这个提示层依然可见,满足小米"同步告知权限目的"的要求。

参考链接:ask 社区相关讨论

方案二:使用 onlyFromCamera 参数(临时规避,但影响体验)

如果业务允许,可以暂时隐藏相册入口,只允许相机扫码:

uni.scanCode({  
    onlyFromCamera: true, // 禁止从相册选择  
    success: (res) => {  
        console.log(res);  
    }  
});

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

缺点:用户无法从相册选图,体验较差,只能作为临时方案。

方案三:使用插件市场现成的权限说明插件

如果不想自己写原生提示层,可以使用插件市场现成的解决方案,比如:

这些插件已经处理了兼容性问题,接入相对简单。

方案四:自行实现扫码功能(工作量大)

如果以上方案都不行,可以使用 plus.barcode 或插件市场的扫码插件(如华为 MLKit),自己实现扫码页面。这样你可以在扫码页面上完全控制 UI,包括添加权限说明的蒙层。

补充建议

  1. 确保基础合规:在 manifest.json 中配置 template 模式的隐私政策提示框,这是基础要求。参考:Android 平台隐私与政策提示框

  2. 权限申请时机:尽量在用户触发扫码功能时才申请权限,不要提前申请。

  3. 文案一致性:提示层的文案要与 manifest.json 中配置的权限说明文案保持一致。

总结:推荐尝试 方案一(plus.nativeObj.View 置顶提示层),这是目前社区验证过能通过小米审核的最实用方案。

内容为 AI 生成,仅供参考
梦尋Junjie

梦尋Junjie (作者) - 原来她有男朋友

救救孩子 ?

bear_develop

bear_develop

androidPrivacy.json 加了么?
另外华为审核,授权权限的时候必须弹框展示
可以用

this.permissionListener = uni.createRequestPermissionListener();  
this.permissionListener.onConfirm((e) => {})  

   const popupView = new plus.nativeObj.View('popupView', {  
      top: 0,  
      left: 0,  
      width: screenWidth,  
      height: 110 + statusBarHeight + 'px'  
      // backgroundColor: 'blue' // debug  
    })  

 popupView.drawText(  
      this.title,  
      {  
        top: statusBarHeight + 10 + 'px',  
        left: padding + bgPadding + 'px',  
        height: '30px',  
        width: screenWidth - bgPadding * 2 - padding * 2 + 'px'  
      },  
      {  
        size: '16px',  
        weight: 'bold',  
        align: 'left',  
        color: this.titleColor  
      },  
      {  
        onClick: function (e) {  
        }  
      }  
    )

要回复问题请先登录注册