uni-app uni.chooseMedia(OBJECT)打正式包后调用没有反应

uni-app uni.chooseMedia(OBJECT)打正式包后调用没有反应

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 10.15.7
HBuilderX类型 正式
HBuilderX版本号 4.57
手机系统 Android
手机系统版本号 Android 14
手机厂商 华为
手机机型 mate70pro
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.chooseMedia({  
    count: 1,  
    mediaType: ['image'],  
    //#ifdef MP  
    sourceType: ['album'],  
    //#endif  
    //#ifdef APP-PLUS  
    sourceType: ['album', 'camera'],  
    //#endif  
    sizeType: ['original','compressed'], //original:原图;compressed:压缩图  
    success: res => {  
        // 设置url的值,显示控件  
        this.imageSrc = res.tempFiles[0].tempFilePath;  
    },  
    complete: () => {  
        uni.hideLoading();  
}  

操作步骤:

  • sourceType: [‘album’, ‘camera’],在云端打正式包后不能执行

预期结果:

  • sourceType: [‘album’, ‘camera’],可以弹出选择相册或者拍摄菜单

实际结果:

  • 不执行

bug描述:

uni.chooseMedia(OBJECT)打云端正式包后调用无反应,不能弹出选择菜单,运行到本地Android APP自定义调试基座是没有问题可以正常弹出,经过测试sourceType如果设置为2个 [‘album’, ‘camera’]就不行,如果只选择其中一个参数就能正常弹出需要权限的对话框,给权限后就能正常选择


更多关于uni-app uni.chooseMedia(OBJECT)打正式包后调用没有反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

云端打包已解决过此问题,请使用“传统打包”模式重新提交云端打包,如果还有问题请发下appid。

更多关于uni-app uni.chooseMedia(OBJECT)打正式包后调用没有反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的权限配置问题。在Android平台上,当使用uni.chooseMedia选择相册和相机时,需要确保以下两点:

  1. 在manifest.json中正确配置了Android权限:
"android": {
    "permissions": [
        "android.permission.CAMERA",
        "android.permission.READ_EXTERNAL_STORAGE",
        "android.permission.WRITE_EXTERNAL_STORAGE"
    ]
}
  1. 在Android 6.0+设备上需要动态申请权限。建议在调用chooseMedia前先检查并申请权限:
// 检查权限
uni.authorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        // 已授权
        chooseMediaMethod();
    },
    fail() {
        // 未授权,申请权限
        uni.showModal({
            content: '需要相册和相机权限',
            success(res) {
                if(res.confirm) {
                    uni.authorize({
                        scope: 'scope.writePhotosAlbum',
                        success() {
                            chooseMediaMethod();
                        }
                    });
                }
            }
        });
    }
});
回到顶部