jstomato
jstomato
  • 发布:2025-03-07 18:04
  • 更新:2025-03-12 15:45
  • 阅读:70

【报Bug】iQOO Neo8 Pro无法开启照片与视频的权限

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.45

手机系统: Android

手机系统版本号: Android 14

手机厂商: vivo

手机机型: iQOO Neo8 Pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
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其他机型也正常

2025-03-07 18:04 负责人:DCloud_Android_zl 分享
已邀请:
DCloud_Android_zl

DCloud_Android_zl

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

  • jstomato (作者)

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

    2025-03-12 14:48

jstomato

jstomato (作者)

用标准基座是可以的,自定义基座就不行

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);  
                }  
            });
jstomato

jstomato (作者)

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\" />",

要回复问题请先登录注册