iQOO Neo8 Pro无法开启照片与视频的权限

iQOO Neo8 Pro无法开启照片与视频的权限

示例代码:

if (plus.os.name == 'Android') {  
    console.log(permissionID);  
    let _permissionID = 'android.permission.' + permissionID;  
    plus.android.checkPermission(  
        _permissionID,  
        (granted) => {  
            if (granted.checkResult == -1) {  
                //还未授权当前查询的权限,打开权限申请目的自定义弹框  
                _this.showPopup = true;  
                _this.$nextTick(() => {  
                    setTimeout(() => {  
                        _this.ani = '' + _this.type;  
                    }, 30);  
                });  
            }  
        },  
        (error) => {  
            console.log(error.message);  
        }  
    );  
    plus.android.requestPermissions([_permissionID], (e) => {  
        //关闭权限申请目的自定义弹框  
        _this.ani = '';  
        _this.$nextTick(() => {  
            setTimeout(() => {  
                _this.showPopup = false;  
            }, 0);  
        });  
        if (e.granted.length > 0) {  
            //当前查询权限已授权,此时可以通知页面执行接下来的操作  
            _this.$emit('changeAuth');  
        }  
        if (e.deniedAlways.length > 0) {  
            //当前查询权限已被永久禁用,此时需要引导用户跳转手机系统设置去开启  
            // #ifdef APP-NVUE  
            _this.openPopup('goOpenPermissionRef');  
            return;  
            uni.showModal({  
                title: '温馨提示',  
                content: '还没有该权限,立即去设置开启?',  
                cancelText: '取消',  
                confirmText: '去设置',  
                showCancel: true,  
                confirmColor: '#000',  
                cancelColor: '#666',  
                success: (res) => {  
                    if (res.confirm) {  
                        _this.goSetting();  
                    }  
                }  
            });  
            // #endif  
            // #ifndef APP-NVUE  
            _this.openPopup('goOpenPermissionRef');  
            // #endif  
        }  
    });  
}

操作步骤:

  • 用vivo Neo8 Pro 调用照片与视频

预期结果:

  • 用vivo Neo8 Pro 调用照片与视频 成功调用或提示开启权限,开启权限后可以成功调用

实际结果:

  • 用vivo Neo8 Pro 调用照片与视频 完全开启不了

bug描述:

vivo Neo8 Pro调出相机权限可以,照片与视频权限不行。但是之前2024年的基座是可以的。2025年新打包的基座不管是调试或打安装包都不行。 其他机型如小米、红米等正常,vivo其他机型也正常

附件:

Image 1 Image 2 Image 3


5 回复

出一个完整的demo,我这边找同款手机试一下,上面示例中的部分变量(如:permissionID)我这边无法对应。


https://ask.dcloud.net.cn/question/204869 应该是和这个问题一样,不过iQOO Neo8 Pro是一次询问都没有。其他手机有正常的两次询问,拒绝后设置打开也不生效

用标准基座是可以的,自定义基座就不行 plus.android.requestPermissions([‘android.permission.WRITE_EXTERNAL_STORAGE’], (e) => {
console.log(e);
if (e.granted.length > 0) {
uni.chooseImage({});
}
if (e.deniedAlways.length > 0) {
var Intent = plus.android.importClass(‘android.content.Intent’);
var Settings = plus.android.importClass(‘android.provider.Settings’);
var Uri = plus.android.importClass(‘android.net.Uri’);
var mainActivity = plus.android.runtimeMainActivity();
var intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
var uri = Uri.fromParts(‘package’, mainActivity.getPackageName(), null);
intent.setData(uri);
mainActivity.startActivity(intent);
}
});

https://ask.dcloud.net.cn/question/197843 说是被废弃了 Android 33 以上设备
WRITE_EXTERNAL_STORAGE 权限已废弃。需要修改为

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> "<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />" "<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />", "<uses-permission android:name=\"android.permission.READ_MEDIA_AUDIO\" />",

从代码和描述来看,这是iQOO Neo8 Pro机型上特有的权限问题。建议检查以下几点:

  1. 确认manifest.json中已正确声明所需权限:
"android-permission": [
    "android.permission.READ_EXTERNAL_STORAGE",
    "android.permission.WRITE_EXTERNAL_STORAGE",
    "android.permission.CAMERA"
]
  1. 对于Android 11+设备,需要特别注意作用域存储限制。可以尝试添加以下配置:
"android": {
    "compileSdkVersion": 30,
    "targetSdkVersion": 30
}
  1. 针对vivo系机型特有的权限管理,建议在代码中添加机型判断:
if(plus.os.vendor.toLowerCase().indexOf('vivo') !== -1) {
    // 特殊处理vivo机型
}
  1. 检查是否使用了正确的权限ID,照片视频权限通常对应READ_EXTERNAL_STORAGE。

  2. 可以尝试使用uni-app的API替代原生方式:

uni.authorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        // 授权成功
    }
})
回到顶部