uni-app chooseImage无法调起摄像头

发布于 1周前 作者 vueper 来自 Uni-App

uni-app chooseImage无法调起摄像头

操作步骤:

uni.chooseImage({
count: 1, // 选择的图片数量
sourceType: ['camera', 'album'], // 只从相机获取图片
success: function(res) {
console.log("选择的图片路径: ", res.tempFilePaths);
// 在这里进行后续处理
},
fail: function(err) {
console.error("打开相机失败: ", err);
}
});

预期结果:

点击拍照 正常调起来摄像头

实际结果:

点击拍照 无反应 无报错


### bug描述:

使用 `chooseImage` 函数点击拍照的时候,没有任何反应,也没有报错,权限已给。但是点击从相册选择就可以正常选择图片,权限已给。同样代码在安卓14正常。
信息类别 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10 22H2
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 Android
手机系统版本号 Android 5.1
手机厂商 PDA
手机机型 PDA
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

1 回复

在处理 uni-app 中的 chooseImage 方法无法调起摄像头的问题时,首先需要确保你的应用已经获得了必要的权限,并且 chooseImage 的配置正确无误。以下是一个示例代码,展示了如何在 uni-app 中正确配置 chooseImage 以调起摄像头。

1. 检查并请求权限

在调用 chooseImage 之前,你需要确保应用已经获得了相机权限。在 uni-app 中,你可以通过 uni.getSettinguni.authorize 来检查并请求权限。

uni.getSetting({
    success: function (res) {
        if (!res.authSetting['scope.camera']) {
            uni.authorize({
                scope: 'scope.camera',
                success: function () {
                    // 用户同意授权
                    callChooseImage();
                },
                fail: function () {
                    // 用户拒绝授权
                    uni.showToast({
                        title: '需要您的摄像头权限',
                        icon: 'none'
                    });
                }
            });
        } else {
            // 已经授权
            callChooseImage();
        }
    }
});

2. 调用 chooseImage 并配置摄像头

接下来,你可以调用 chooseImage 方法并配置 sourceType['camera'] 以确保只调起摄像头。

function callChooseImage() {
    uni.chooseImage({
        count: 1, // 最多可以选择的图片张数
        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['camera'], // 从相机选择
        success: function (res) {
            const tempFilePaths = res.tempFilePaths;
            console.log('选中的图片路径:', tempFilePaths);
            // 可以在这里处理选中的图片,比如上传到服务器
        },
        fail: function (err) {
            console.error('选择图片失败:', err);
            uni.showToast({
                title: '选择图片失败',
                icon: 'none'
            });
        }
    });
}

3. 注意事项

  • 确保你的 manifest.json 中已经配置了相机权限。
  • 在某些平台上(如微信小程序),需要确保你的小程序后台设置中已经开启了相机权限。
  • 如果用户之前拒绝了权限请求,可能需要引导用户到设置中手动开启权限。

以上代码示例展示了如何在 uni-app 中检查权限、请求权限,并正确配置 chooseImage 以调起摄像头。如果问题依旧存在,建议检查控制台输出,查看是否有权限请求失败或其他错误信息,以便进一步调试。

回到顶部