uni-app uni.chooseImage 拒绝授权后重复弹出授权

uni-app uni.chooseImage 拒绝授权后重复弹出授权

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
Android Android 13 -
OPPO k9 Pro -
HBuilderX 3.8.12 -
vue vue2 -

操作步骤:

运行 hello uni-app 选择图片上传,拒绝授权后自动重复弹出授权

预期结果:

运行 hello uni-app 选择图片上传,拒绝授权后不再自动重复弹出授权

实际结果:

运行 hello uni-app 选择图片上传,拒绝授权后自动重复弹出授权

bug描述:

运行 hello uni-app 选择图片上传,拒绝授权后自动重复弹出授权

视频.zip


更多关于uni-app uni.chooseImage 拒绝授权后重复弹出授权的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

复现过程在视频中,直接运行的基础基座

更多关于uni-app uni.chooseImage 拒绝授权后重复弹出授权的实战教程也可以访问 https://www.itying.com/category-93-b0.html


没人遇到这个问题吗?

这里是在 拒绝授权做了,重新授权的操作,如果不需要 可以删掉, pages/API/image/image.vue 136行

不是的,就算只写一个示例 它也是拒绝授权后,又自动弹出来一次

<button @click=“chooseImg”>选择图片</button>

chooseImg(){

uni.chooseImage({

count: 1,

sizeType: [‘original’, ‘compressed’],

sourceType: [‘album’, ‘camera’],

success: (res) => {

用华为试了就没这个问题

这是一个已知的uni-app权限处理问题。在Android 13设备上,当用户拒绝uni.chooseImage的权限请求后,系统会重复弹出授权对话框。

解决方案:

  1. 在manifest.json中添加以下配置:
"permission" : {
    "scope.userLocation" : {
        "desc" : "你的位置信息将用于..."
    }
}
  1. 在调用uni.chooseImage前,先检查权限状态:
uni.getSetting({
    success(res) {
        if(!res.authSetting['scope.writePhotosAlbum']){
            uni.authorize({
                scope: 'scope.writePhotosAlbum',
                success() {
                    uni.chooseImage({...});
                },
                fail() {
                    // 用户拒绝后不再重复请求
                }
            })
        } else {
            uni.chooseImage({...});
        }
    }
})
  1. 对于已拒绝的情况,可以引导用户手动开启权限:
uni.showModal({
    content: '需要相册权限',
    confirmText: '去设置',
    success(res) {
        if(res.confirm){
            uni.openSetting();
        }
    }
})
回到顶部