uni-app 使用gallery选中照片后报错

uni-app 使用gallery选中照片后报错

操作步骤:

使用gallery选择相册照片,相册能正常开启,选中照片后报错```

### 预期结果:
选中照片能正常返回

### 实际结果:
选中照片后报错

### bug描述:

targetSdkVersion:29 使用gallery添加设备相册图片,能正常打开相册,但是选中某张图片后报错


| 信息类别   | 信息内容       |
|------------|----------------|
| 产品分类   | HTML5+         |
| 版本号     | 3.4.12         |
| 手机系统   | Android        |
| 手机系统版本 | Android 11     |
| 手机厂商   | 小米           |
| 手机机型   | Pad5           |
| 打包方式   | 离线           |

![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20220530/15449c978c01631c09a35f7270b157ff.jpg)
1 回复

在 uni-app 中使用 gallery 选中照片后报错,可能是由于多种原因引起的。以下是一些常见的问题和解决方法:

1. 权限问题

  • 问题描述: 在 Android 设备上,访问相册需要 READ_EXTERNAL_STORAGE 权限。如果未正确配置权限,可能会导致报错。
  • 解决方法: 在 manifest.json 中确保已添加以下权限:
    {
      "permission": {
        "android.permission.READ_EXTERNAL_STORAGE": {}
      }
    }
    并且在代码中动态请求权限:
    uni.authorize({
      scope: 'scope.writePhotosAlbum',
      success() {
        console.log('授权成功');
      },
      fail() {
        console.log('授权失败');
      }
    });

2. 路径问题

  • 问题描述: 选中照片后,返回的路径可能不符合预期,导致后续操作报错。
  • 解决方法: 确保正确处理返回的路径。例如,使用 uni.chooseImage 选择图片后,返回的路径是一个数组,需要正确获取并使用:
    uni.chooseImage({
      count: 1,
      success(res) {
        const tempFilePaths = res.tempFilePaths;
        console.log('选择的图片路径:', tempFilePaths[0]);
      }
    });

3. 文件类型问题

  • 问题描述: 如果选择的文件类型不符合预期(例如选择了非图片文件),可能会导致后续处理报错。
  • 解决方法: 在 uni.chooseImage 中指定 sourceTypesizeType,确保选择的是图片文件:
    uni.chooseImage({
      count: 1,
      sourceType: ['album'], // 从相册选择
      sizeType: ['original', 'compressed'], // 可以指定原图或压缩图
      success(res) {
        const tempFilePaths = res.tempFilePaths;
        console.log('选择的图片路径:', tempFilePaths[0]);
      }
    });

4. 平台差异

  • 问题描述: 不同平台(如 iOS 和 Android)在处理相册时可能存在差异,导致在某些平台上报错。
  • 解决方法: 确保代码在不同平台上都能正常工作。可以使用条件编译来处理平台差异:
    // #ifdef APP-PLUS
    // 处理 App 端的逻辑
    // #endif
    
    // #ifdef H5
    // 处理 H5 端的逻辑
    // #endif

5. 插件或库问题

  • 问题描述: 如果使用了第三方插件或库来处理相册功能,可能是插件本身存在问题。
  • 解决方法: 检查插件的文档,确保正确使用。如果插件有问题,可以尝试更新插件或寻找替代方案。

6. 调试和日志

  • 问题描述: 如果以上方法都无法解决问题,可以通过调试和日志来进一步排查问题。
  • 解决方法: 在代码中添加日志输出,查看报错的具体信息:
    uni.chooseImage({
      count: 1,
      success(res) {
        console.log('选择成功:', res);
      },
      fail(err) {
        console.error('选择失败:', err);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!