首页 > 其他分享 >解决 uniapp打包app 使用uview的图片上传导致的 您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(存储)等权限,不符合华为应用市场审核标准。

解决 uniapp打包app 使用uview的图片上传导致的 您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(存储)等权限,不符合华为应用市场审核标准。

时间:2024-11-14 14:59:13浏览次数:1  
标签:openType app uview ts height 权限 上传 弹窗

该问题主要原因是因为 u-upload 的组件在点击上传组件就直接触发了权限获取

而华为的要求是 点击拍摄 提示获取相机权限并提示 点击 从相册选择 获取存储权限并提示

本文主要解决 uview 的u-upload导致的问题

解决思路为

修改u-upload组件

在 u-upload 组件添加以下代码

//自定义的 弹窗按钮 样式请自行修改 并做相应适配 这里是一个极简的方案
<view class="pop" v-show="showPop">
    <view class="pop-box">
        <view class="p-top">
            //点击拍摄 手动检查拍摄权限
            <view class="p-t-t" @click="handleUpload('camera')">
                拍摄
            </view>
            //从相册选择 手动检查存储权限
            <view @click="handleUpload('album')">
                从相册选择
            </view>
        </view>
        <view class="p-bottom" @click="showPop=false">
            取消
        </view>
    </view>
</view>
.pop{
        width: 100vw;
        height: 100vh;
        position: fixed;
        background-color: rgba(0, 0, 0, 0.3);
        top: 0;
        left: 0;
        z-index: 999;
        .pop-box{
            width: 100%;
            position: absolute;
            bottom: 30rpx;
        }
        .p-top{
            width: 100%;
            background-color: #FFFFFF;
            height: 160rpx;
            border-radius: 10rpx;
            view{
                height: 80rpx;
                line-height: 80rpx;
                text-align: center;
            }
            .p-t-t{
                border-bottom: 1rpx solid #000;
            }
        }
        .p-bottom{
            width: 100%;
            margin-top: 30rpx;
            height: 80rpx;
            background-color: #fff;
            line-height: 80rpx;
            text-align: center;
            font-weight: bold;
            border-radius: 10rpx;
        }
    }
<u-popup :show="auth_show" zIndex="10075" mode="top" @close="auth_close" @open="auth_open">
            <view class="p-30">
                <view>
                    <text class="font-40 font-bold">{{ts_title}}</text>
                    <text class="font-36">{{ts_content}}</text>
                </view>
                <view class="mt30">
                    <text class="font-40 font-bold">{{ts_title1}}</text>
                    <text class="font-36">{{ts_content1}}</text>
                </view>
            </view>
            
        </u-popup>

 

js部分

在 chooseFile函数首行加入 

chooseFile() {

  //拦截上传图片事件
  
  //打开自定义弹窗
  this.showPop = true
  this.auth_show = true
  return

}
 

加入方法

//点击按钮触发不同的权限检查
            handleUpload(openType) {
                var _this=this;
                console.log(openType);
                //自定义的 图片上传方式
                this.openType = openType
                if (openType == 'camera') {
                    this.permissionID = 'CAMERA'
                    this.$nextTick(() => {
                        //this.$refs.authpup.open()
                        _this.changeAuth();
                    })
                } else if (openType == 'album') {
                    this.permissionID = 'WRITE_EXTERNAL_STORAGE'
                    this.$nextTick(() => {
                        //this.$refs['authpup'].open();
                        //this.$refs.authpup.open()
                        _this.changeAuth();
                    })
                }
            
            },
            //权限检查完成的回调
            changeAuth() {
                //console.log("333");
                const {
                    maxCount,
                    multiple,
                    lists,
                    disabled
                } = this;
                //触发u-upload的图片上传事件
                chooseFile(
                    Object.assign({
                        accept: this.accept,
                        multiple: this.multiple,
                        // 此处为 camera | album  直接打开相机 或者选择图片
                        capture: [this.openType],
                        compressed: this.compressed,
                        maxDuration: this.maxDuration,
                        sizeType: this.sizeType,
                        camera: this.camera,
                    }, {
                        maxCount: maxCount - lists.length,
                    })
                )
                    .then((res) => {
                        this.onBeforeRead(multiple ? res : res[0]);
                    })
                    .catch((error) => {
                        this.$emit('error', error);
                    });
            },

 

data加入

showPop:false,
                
                auth_show:false,
                
                ts_title:'甜聘对存储空间/照片权限申请说明',//权限弹窗标题
                ts_content:'便于您使用该功能上传您的照片/图片/视频及用于更换头像、意见反馈、保存相册、合同附件、补贴预支理赔附件,人事附件、下载与客服沟通等场景中读取和写入相册和文件内容。',//权限弹窗内容
                
                ts_title1:'甜聘对相机/摄像头权限申请说明',//权限弹窗标题
                ts_content1:'便于您使用该功能拍照上传您的照片/视频及用于更换头像、意见反馈、保存相册、合同附件、贴预支理赔附件、下载与客服沟通等场景中使用',//权限弹窗内容

 

 

参考文档:https://blog.csdn.net/csdnxxxjjjqqq/article/details/135282521



标签:openType,app,uview,ts,height,权限,上传,弹窗
From: https://www.cnblogs.com/zhangyouwu/p/18545980

相关文章

  • 【Azure App Service】在App Service for Windows上验证能占用的内存最大值Y5
    问题描述在创建AppService服务的时候,根据定价层不同,内存使用的最大值也有不同。但在实际测试中,发现内存最大只能占用2GB左右,而定价层中内存分配明明是大于2GB(比如B3定价层的内存为7GB),这是一种什么情况呢?在AppService中Kudu工具上,查看进程分配的内存大小:问题解答使用......
  • 权限系统:权限应用服务设计Tu
    大家好,我是汤师爷~今天聊聊权限系统的应用服务设计。从业务需求的角度来看,权限系统需要解决两个核心问题:1、菜单渲染与动态展示当用户成功登录并接入系统后,系统需要动态获取并展示该用户有权限访问的菜单项。这一过程涉及前端系统与权限系统的交互。前端系统会向权限系统发......
  • 百万前端之uniapp开发微信小程序快速上手
    uniapp,一端开发多端使用。在使用uniapp开发之前必须要先掌握vue的语法,因为uniapp是基于vue的语法进行开发的。下载好HBuilderX工具进行开发,事半功倍。开发工具:HBuilderX、微信开发者工具(预览小程序)开发环境:node.js 1.创建项目使用uni-ui多端兼容,开发更高效!2.基础配置......
  • uni-app使用watch监听数据,当数据变化时页面没有根据变化数据渲染解决方法
    uni-app使用<Fudian:fenshuj="fenshuj"></Fudian>父传子数据时,子组件通过import{ref,onMounted,watch,watchEffect,defineProps}from"vue";   constprops=defineProps({      fenshuj:{         type:String,        ......
  • 同城圈子APP隐私设置指南,社交圈子源码,前端uniapp,后端PHP
    圈子系统APP-uniapp源码开源社交圈子小程序社区系统兴趣爱好同城社交社群系统同城圈子APP隐私设置因应用而异,以下为通用步骤:1、进入隐私设置打开APP,点击底部导航栏的“我的”。进入“设置”页面,选择“隐私设置”。2、隐藏位置信息在隐私设置中,找到并点击“隐藏位置”选......
  • 如何分发APP供用户使用?
    ​在移动互联网时代,APP(应用程序)已成为人们日常生活中不可或缺的一部分。无论是购物、社交、娱乐还是工作,APP都提供了极大的便利。然而,开发一款APP只是第一步,如何将其有效地分发到用户手中,让用户能够轻松下载并使用,才是决定APP成功与否的关键。一、应用商店分发应用商店是APP分发......
  • vue2的uniapp添加用户登录校验
    在uni-app中实现全局路由守卫的确切方法可能会根据框架的版本和具体的实现方式有所不同。在Vue2和uni-app的结合使用中,全局路由守卫并不是原生支持的功能,因此我们需要采用一些替代方案。对于Vue2和uni-app,你可以通过封装uni-app的页面跳转方法来实现类似全局......
  • 移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
    本文由携程技术团队Aaron分享,原题“干货|携程弱网识别技术探索”,下文进行了排版和内容优化。1、引言网络优化一直是移动互联网时代的热议话题,弱网识别作为移动端弱网优化的第一步,受到的关注和讨论也是最多的。本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱......
  • 精准管理特定访客的所有权限,构建高效知识库系统
    企业管理中,精准控制访客的内容权限历来是一项复杂而关键的挑战。传统方法因其操作繁琐,往往难以实现对不同访客访问权限的细致管理。为此,HelpLook在近期功能升级中,特别推出了更精细化的访客内容权限管理功能。以人员为核心维度,实现了对特定人员文章及栏目访问权限的精细化......
  • uniapp微信小程序video不显示,不生效
    问题描述微信小程序开发者工具video不显示,无法播放,也没有任何错误,就是不显示原因报错原因:微信开发者工具调试基础库版本太高解决方法 ......