更新记录

2.0.10(2026-02-27)

iOS增加getGalleryThumbnails获取缩略图、getImageById根据ID获取原图、iOS优化性能

2.0.9(2025-08-13)

兼容Android 8、安卓增加时间区间筛选、增加getFiles

2.0.8(2025-07-02)

iOS新增图片缩略图和openSettings

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:8.0 - 15.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:9 - 18

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


静默获取相册图片、视频 Android、iOS

  • 时间范围图片检索;
  • 创建时间正倒序;
  • 分页限制获取,返回总数;
  • 响应包含图片名称、创建时间、宽度、高度、大小、图片路径、图片总数

iOS版独立插件

静默获取相册图片视频

Android版独立插件

安卓静默获取相册图片视频

uniapp使用示例

// 技术支持:Q群274472113
var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
// 开始获取相册图片
galleryModule.getGalleryImages(
  {
    // asc: false, // [是否正序],非必填,默认按创建时间倒序
    // time: -3 * 24 * 60 * 60, // [距现在时间范围], 非必填,单位秒,表示当前时间之前到现在xx秒(负数),场景:获取3天内照片
    // exif: true, // 是否返回exif信息,【仅IOS支持】
    // imageType: 0 // 图片类型 0.所有 1.仅截图 2.除截屏 【仅安卓支持】
    // [每页条数],默认20条 每页获取的照片数量,注意:iOS不能单次大批量获取,可能导致内存暴涨应用闪退,可分页获取
    count: 20,
    // [页码], 非必填默认第一页
    page: 1,

    // 时间区间筛选,仅支持安卓,秒级时间戳格式
    // startTime: Math.floor(new Date().getTime() / 1000) - 3 * 24 * 60 * 60,
    // endTime: Math.floor(new Date().getTime() / 1000)
  },
  (res) => {
    console.log(res);
    // 无权限时返回 可由uniapp弹窗引导提醒前往应用设置开启相册授权,安卓可调用方法openSetting打开设置页
    // {"status": 401,"data": [],"msg": "暂无权限获取相册图片"}

    // iOS响应数据示例 2.0.4版本以后图片资源可直接Image标签引用
    // {
    //   status: 200,
    //   data: [{
    //     filename: "00001.JPG",
    //     creationDate: "yyyy-MM-dd HH:mm:ss",
    //     width: 1920,
    //     height: 1080,
    //     size: 102400,
    //     path: "xxx/Library/Caches/GalleryImageCache/00001.JPG_1623824200_220731-24.jpg",  // 应用沙盒图片路径,可渲染
    //     imageURL: "file://var/mobile/Media/PhotoData/CPLAsesets/xxx.JPG", // 绝对路径
    //     thumb: "" // 缩略图
    //   }],
    //   total: 60,
    //   msg: "获取图片成功"
    // }

    // Android响应数据示例
    // {
    //   status: 200,
    //   data: [{
    //       "filename": "mmexport1678604059025",
    //       "path": "/storage/emulated/0/Pictures/WeiXin/mmexport1678604059025.jpg",
    //       "thumb": "file///xxxx.jpeg",
    //       "width": 1440,
    //       "height": 1805,
    //       "size": 287473,
    //       "creationDate": "1678604059"
    //       "add_time": 1678604059000
    //   }],
    //   total: 60,
    //   current: 1,
    //   msg: "获取图片成功"
    // }

    // 示例
    if (res && res.status === 200 && res.data.length > 0) {
      // 预览
      uni.previewImage({
        urls: res.data.map(({ path }) => path),
      });

      // 上传,示例如下js
      uploadAction(ret.data);
    }
  },
);

获取缩略图(仅支持IOS)

// 技术支持:Q群274472113
var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
// 开始获取相册图片
galleryModule.getGalleryThumbnails(
  {
    count: 20, // [每页条数],默认20条 每页获取的照片数量
    page: 1, // [页码], 非必填默认第一页
    width: 200, // 缩略图宽度,非必填,默认100,窄边最小宽度
    height: 200, // 缩略图高度,非必填,默认100,窄边最小高度
  },
  (res) => {
    if (res.status === 401) return;

    // 缩略图列表
    const thumbnails = res.data.map(({ id, thumb }) => thumb);
    // 预览
    uni.previewImage({
      urls: thumbnails,
    });
  },
);

根据图片ID获取原图(仅支持IOS)

// 技术支持:Q群274472113
var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
// 开始获取相册图片
galleryModule.getImageById(
  {
    id: "00001", // 图片ID,必填,根据以上getGalleryThumbnails可获取图片ID
    png: true, // 是否返回png格式,非必填,默认false
    exif: false, // 是否返回exif信息,非必填【仅IOS支持】
  },
  (res) => {
    if (res.status === 401) return uni.showToast({ title: res.msg });
    if (res.status === 404) return uni.showToast({ title: res.msg });

    // 图片详情
    // {
    //     filename: "00001.JPG",
    //     creationDate: "yyyy-MM-dd HH:mm:ss",
    //     width: 1920,
    //     height: 1080,
    //     size: 102400,
    //     path: "xxx/Library/Caches/GalleryImageCache/00001.JPG_1623824200_220731-24.jpg",  // 应用沙盒图片路径,可渲染
    //     imageURL: "file://var/mobile/Media/PhotoData/CPLAsesets/xxx.JPG", // 绝对路径
    // }
    console.log(res.data);
  },
);

uniapp侧js上传照片(仅提供demo,视场景使用)

const uploadFiles = (list, callback) => {
  let curIndex = 0
  const loopUpload = () => {
    if (curIndex === list.length) {
      // 递归上传完成
      callback && callback()
      return
    }

    const curPath = list[curIndex].path

    uni.uploadFile({
      url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
      filePath: curPath,
      name: 'file',
      success: (res) => {
        curIndex++
        loopUpload()
      },
      fail: (err) => {
        curIndex++
        loopUpload()
      }
    })
  }
  loopUpload()
}

uniapp使用示例 获取视频

var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
galleryModule.checkPermission((res) => {
  if (res.status !== 200) return;
  galleryModule.getGalleryVideos(
    {
      // [是否正序],非必填,默认按创建时间倒序
      // asc: false,
      // [距现在时间范围], 非必填,单位秒,表示当前时间之前到现在xx秒(负数),场景:获取3天内视频
      // time: -3 * 24 * 60 * 60,
      // [每页条数],默认20条 每页获取的数量
      count: 20,
      // [页码], 非必填默认第一页
      page: 1,
    },
    (ret) => {
      console.log(ret);
      // 无权限时返回 可由uniapp弹窗引导提醒前往应用设置开启相册授权
      // {"status": 401,"data": [],"msg": "暂无权限获取相册视频"}

      // iOS响应数据 视频可直接video标签引用
      // {
      //   status: 200,
      //   data: [{
      //       "filename": "IMG_8717.MP4",
      //       "path": "xxx/Library/Caches/galleryCacheFolder/MOV_C20EEF43-8DB1-459B-B38F-ECFBFA4F7A27_IMG_8717.MP4",
      //       "width": 1280,
      //       "height": 1920,
      //       "size": 279412,
      //       "duration": 38,
      //       "creationDate": "2023-04-05 10:32:35"
      //   }],
      //   total: 6,
      //   current: 1,
      //   msg: "获取视频成功"
      // }

      // Android响应数据
      // {
      //   status: 200,
      //   data: [{
      //       "filename": "VID_20230403_180547",
      //       "path": "/storage/emulated/0/Movies/VID_20230403_180547.mp4",
      //       "width": 1280,
      //       "height": 720,
      //       "size": 13110012,
      //       "duration": 38000,
      //       "creationDate": "1680516357"
      //   }],
      //   total: 6,
      //   current: 1,
      //   msg: "获取视频成功"
      // }
    },
  );
});

无权限401 验证权限 【安卓可动态申请权限】

var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
galleryModule.checkPermission((res) => {
  // 未获得权限,会动态申请权限一次 多次拒绝后只能引导用户去开启相册权限
  // { "status": 401, "msg": "未获得相册读取权限" }
  // 已获得权限
  // { "status": 200, "msg": "已获得相册读取权限" }
});

打开应用设置页,仅安卓支持

var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
galleryModule.openSetting((res) => {
  // { "status": 200, "msg": "已打开权限设置页面" }
});

获取文件,仅安卓支持

var galleryModule = uni.requireNativePlugin("vutet-getGalleryImages");
galleryModule.getFiles(
  {
    directory: null, // 目录绝对路径path,或null 查询根目录
    // count: 20,
    // page: 1,
  },
  (res) => {
    // { "status": 401, "msg": "暂无权限获取文件" }
    // { "status": 404, "data": [], "msg": "指定目录不存在" }
    // { "status": 200, "data": [{ "name": "Downloads", "path": "AbsolutePath" }], msg": "获取文件成功", "total": 10 }
  },
);

问题反馈

插件可能存在的问题:

  • 1.低系统版本不支持,鸿蒙4.0实测支持,纯血鸿蒙next不支持
  • 2.已上传iCloud或云服务的网络图片
  • 3.Q群274472113

隐私、权限声明

1. 本插件需要申请的系统权限列表:

iOS: NSPhotoLibraryUsageDescription Android android.permission.READ_EXTERNAL_STORAGE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: