更新记录

1.0.0(2026-06-30)

  • 首版发布 lizhao-gallery-pro 相册媒体 UTS 插件。
  • 支持 Android / iOS 相册图片与视频统一查询、分页、时间范围、来源分类和权限状态读取。
  • 支持缩略图批量生成、按媒体 ID 导出可渲染/可上传临时文件、上传辅助、缓存清理和能力矩阵。
  • 上传辅助支持 dryRun 导出校验,不配置上传地址也能验证媒体可上传路径且不会发起网络请求。
  • 上传结果明细新增 index 字段,并按传入 ids 顺序返回,方便业务和原始选择列表对齐。
  • 缓存清理支持按 all / thumbnail / export 分类型清理,避免缩略图缓存和导出上传缓存互相影响。
  • 相册分组返回图片/视频数量、封面缩略图、最新媒体 ID、最新文件名和最新创建时间,便于直接构建相册入口页。
  • 相册分组支持 sourceType 来源过滤,可直接读取截图、相机、微信、QQ、下载等来源相册。
  • Android 视频缩略图兜底改用 MediaMetadataRetriever 取帧,移除废弃的 createVideoThumbnail / MINI_KIND 调用。
  • 提供 uni-app 与 uni-app x 内置示例,示例从插件根目录导入,覆盖权限检查、图片列表、视频列表、混合列表、导出显示和上传流程。
  • 文档采用客户接入顺序组织,并在底部补充作者系列 UTS 插件推荐。

平台兼容性

uni-app(5.07)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - 6.0 -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

lizhao-gallery-pro

lizhao-gallery-pro 是面向 uni-app / uni-app x 的相册媒体读取 UTS 插件,授权后可读取系统相册图片和视频,并提供分页、筛选、缩略图、导出临时文件、来源分类和上传辅助。

当前版本:1.0.0

联系方式:信-微:l-z-1-8-7-1512-5421(-去掉,不这样写会被和谐)

功能特色

能力 解决的问题 对应 API
图片、视频、混合列表 不弹系统选择器,授权后直接读取相册媒体列表 getGalleryImages / getGalleryVideos / getGalleryMedia
分页读取 大图库不会一次性塞满内存,可用 nextPageToken 循环读取下一页 pageSize / pageToken
时间筛选 只读取最近一天、最近一周或指定时间段内的媒体 startTime / endTime
来源分类 识别相机、截图、微信、QQ、下载等来源,方便做相册入口和筛选 sourceType / sourceLabel
相册分组 返回相册数量、图片/视频数量、封面和最新媒体信息 getGalleryAlbums
缩略图 列表先显示小图,减少原图加载压力 getGalleryThumbnails
临时文件导出 把系统媒体导出成页面可显示、接口可上传的路径 exportMediaToTempFile
上传辅助 内置导出、上传、dry-run 校验、进度、重试和结果顺序对齐 uploadGalleryMedia
缓存清理 缩略图缓存和导出缓存可以分开清理 clearGalleryCache
能力矩阵 先判断平台能力,再决定是否展示业务入口 getGalleryCapabilities

适合哪些场景

  • 社区发帖、评价晒单、工单上报,需要从相册读取图片或视频。
  • 素材库、云盘、相册备份,需要分页读取大量本地媒体。
  • 内容审核、巡检记录、设备报修,需要按相机、截图、微信、QQ、下载等来源做分类。
  • 自定义相册选择器,需要自己做 UI、分页、封面、预览和上传。
  • iOS 页面需要稳定显示相册图片,不能直接依赖不可访问的原始资产路径。
  • 上传前需要先生成可上传路径,或用 dryRun=true 在无服务端时验证导出链路。

接入方式怎么选

业务需求 推荐方式 说明
只判断入口能不能用 checkGalleryPermission 不主动弹权限,只返回当前授权状态
首次进入时申请权限 requestGalleryPermission Android / iOS 按当前系统版本请求相册权限
只要图片 getGalleryImages 图片选择器、相册备份、图片上传
只要视频 getGalleryVideos 视频素材库、短视频投稿、视频上传
图片和视频一起获取 getGalleryMedia({ mediaType: 'all' }) 混合素材列表
做相册分组页 getGalleryAlbums 相册入口、来源分类、封面展示
列表显示封面 getGalleryThumbnails 九宫格、瀑布流、素材管理
需要页面预览或上传 exportMediaToTempFile 使用 renderPath 显示,使用 uploadPath 上传
直接上传相册文件 uploadGalleryMedia 支持并发、重试、进度和 dryRun
控制缓存占用 clearGalleryCache 可单独清理缩略图或导出文件

最小示例

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

// 第一步:先检查权限。success / fail / complete 都会按调用结果触发。
GalleryPro.checkGalleryPermission({
  mediaType: 'all',
  success(res) {
    console.log('相册权限状态', res.status, res.message)
    if (!res.granted) {
      // 第二步:未授权时再请求权限,避免一进页面就打扰用户。
      GalleryPro.requestGalleryPermission({
        mediaType: 'all',
        success(auth) {
          console.log('授权结果', auth.granted, auth.status)
        }
      })
    }
  },
  fail(err) {
    console.log('权限检查失败', err.errCode, err.errMsg)
  }
})

图片列表

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

// 读取最新 30 张图片。includeThumbnail=true 会尽量返回缩略图路径。
GalleryPro.getGalleryImages({
  pageSize: 30,
  includeThumbnail: true,
  success(res) {
    console.log('图片总数', res.total)
    console.log('本页图片', res.items)
    console.log('下一页令牌', res.nextPageToken)
  }
})

视频列表

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

// 只读取最近 7 天的视频,适合短视频投稿和素材管理。
GalleryPro.getGalleryVideos({
  pageSize: 20,
  startTime: Date.now() - 7 * 24 * 60 * 60 * 1000,
  includeThumbnail: true,
  success(res) {
    console.log('视频列表', res.items)
  }
})

图片视频混合列表示例

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

let nextPageToken = ''

function loadMixedPage() {
  // mediaType='all' 表示图片视频混合列表;pageToken 为空时读取第一页。
  GalleryPro.getGalleryMedia({
    mediaType: 'all',
    pageSize: 40,
    pageToken: nextPageToken,
    sourceType: 'all',
    sortOrder: 'desc',
    success(res) {
      console.log('当前页媒体', res.items)
      nextPageToken = res.nextPageToken

      // 需要全量读取时,不要一次性设置超大 pageSize;建议这样循环读取下一页。
      if (res.hasMore) {
        loadMixedPage()
      }
    }
  })
}

缩略图与导出示例

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

// 列表页建议先拿缩略图,减少原图/原视频加载压力。
GalleryPro.getGalleryThumbnails({
  ids: ['media-id-1', 'media-id-2'],
  width: 240,
  height: 240,
  success(res) {
    console.log('缩略图结果', res.items)
  }
})

// 用户点击预览、编辑或上传前,再导出临时文件。
GalleryPro.exportMediaToTempFile({
  id: 'media-id-1',
  exportType: 'render',
  success(res) {
    console.log('renderPath 用于页面显示,uploadPath 用于上传')
    console.log(res.renderPath, res.uploadPath)
  }
})

上传示例

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

// 有服务端时,传入 url 后插件会先导出文件,再调用上传接口。
GalleryPro.uploadGalleryMedia({
  ids: ['media-id-1', 'media-id-2'],
  url: 'https://example.com/upload',
  dryRun: false,
  name: 'file',
  concurrency: 2,
  retryCount: 1,
  progress(event) {
    console.log('上传进度', event.stage, event.current, event.total, event.progress)
  },
  success(res) {
    console.log('上传成功数', res.successCount)
    console.log('上传失败数', res.failCount)
    console.log('items 顺序与 options.ids 一致,index 是传入 ids 的原始序号', res.items)
  }
})

没有上传服务器时,可以先用 dryRun=true 校验导出链路。它只导出并返回路径,不会发起网络请求。

import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

GalleryPro.uploadGalleryMedia({
  ids: ['media-id-1'],
  dryRun: true,
  progress(event) {
    console.log('导出校验进度', event.stage, event.progress)
  },
  success(res) {
    console.log('可上传路径', res.items[0].uploadPath)
  }
})

完整示例路径

项目类型 示例路径 说明
uni-app uni_modules/lizhao-gallery-pro/example/uniapp/galleryPro.vue 权限、图片列表、视频列表、混合分页、缩略图、导出、上传和缓存清理
uni-app x uni_modules/lizhao-gallery-pro/example/uniappx/index.uvue 使用同一组 API 验证 App 端能力
Android 自动验收 scripts/acceptance-lizhao-gallery-pro-android.ps1 自定义基座安装后,通过 ADB 验证权限、分页、缩略图、导出和上传 dry-run

API 说明

API 作用 常用场景
checkGalleryPermission(options) 检查相册读取权限 页面入口、权限引导
requestGalleryPermission(options) 请求相册读取权限 首次使用、用户重新授权
getGalleryMedia(options) 读取图片、视频或混合媒体 自定义素材列表
getGalleryImages(options) 读取图片列表 图片选择、图片上传
getGalleryVideos(options) 读取视频列表 视频选择、视频上传
getGalleryThumbnails(options) 批量生成缩略图 列表封面、九宫格
getMediaById(options) 按 ID 读取单个媒体 详情页、导出前确认
exportMediaToTempFile(options) 导出为临时文件 页面预览、编辑、上传
uploadGalleryMedia(options) 导出并上传相册媒体 批量提交、dry-run 校验
getGalleryAlbums(options) 获取相册分组 相册入口、来源分类
clearGalleryCache(options) 清理插件缓存 控制缓存体积
getGalleryCapabilities() 获取能力矩阵 平台判断、入口控制

API 参数表

checkGalleryPermission(options) / requestGalleryPermission(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryPermissionOptions 权限参数对象 mediaType / preferFullAccess / success / fail / complete
options.mediaType GalleryMediaType 需要检查或请求的媒体类型 all image / video / all
options.preferFullAccess boolean iOS 有限照片权限场景下是否更倾向完整权限 false true / false
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

getGalleryMedia(options) / getGalleryImages(options) / getGalleryVideos(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryQueryOptions 查询参数对象 mediaType / pageSize / pageToken / startTime / endTime / albumId / sourceType / sortOrder / includeThumbnail / success / fail / complete
options.mediaType GalleryMediaType 媒体类型,专用方法会自动覆盖 all image / video / all
options.pageSize number 每页数量 30 建议 1-100
options.pageToken string 下一页令牌 空字符串 上次返回的 nextPageToken
options.startTime number 开始时间,毫秒时间戳
options.endTime number 结束时间,毫秒时间戳
options.albumId string 相册 ID getGalleryAlbums 返回的 albumId
options.sourceType GallerySourceType 来源分类过滤 all camera / screenshot / *** / qq / download / other / all
options.sortOrder GallerySortOrder 排序方式 desc desc / asc
options.includeHidden boolean 是否包含隐藏媒体 false true / false
options.includeThumbnail boolean 是否尽量返回缩略图 false true / false
options.thumbnailWidth number 缩略图宽度 240
options.thumbnailHeight number 缩略图高度 240
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

getGalleryThumbnails(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryThumbnailOptions 缩略图参数对象 ids / width / height / quality / success / fail / complete
options.ids Array<string> 媒体 ID 列表
options.width number 缩略图宽度 240
options.height number 缩略图高度 240
options.quality number 图片质量 80 1-100
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

getMediaById(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryMediaByIdOptions 单媒体查询参数 id / includeThumbnail / success / fail / complete
options.id string 媒体 ID
options.includeThumbnail boolean 是否返回缩略图 false true / false
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

exportMediaToTempFile(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryExportOptions 导出参数对象 id / exportType / fileName / success / fail / complete
options.id string 媒体 ID
options.exportType GalleryExportType 导出用途 render render / upload / original
options.fileName string 自定义文件名 自动生成
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

uploadGalleryMedia(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryUploadOptions 上传参数对象 ids / url / dryRun / name / formData / concurrency / retryCount / timeoutMs / progress / success / fail / complete
options.ids Array<string> 媒体 ID 列表
options.url string 上传地址,dryRun=true 时可不传
options.dryRun boolean 是否只导出校验,不发起网络请求 false true / false
options.name string 文件字段名 file
options.formData UTSJSONObject 附加表单字段
options.concurrency number 并发数量 1 建议 1-3
options.retryCount number 失败重试次数 0
options.timeoutMs number 单文件上传超时 60000
options.progress function 进度回调
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

getGalleryAlbums(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryAlbumsOptions 分组查询参数对象 {} mediaType / sourceType / success / fail / complete
options.mediaType GalleryMediaType 统计图片、视频或全部媒体 all image / video / all
options.sourceType GallerySourceType 来源分类过滤,例如 sourceType='screenshot' all camera / screenshot / *** / qq / download / other / all
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调

clearGalleryCache(options)

参数 类型 必填 说明 默认值 可选参数
options GalleryClearCacheOptions 缓存清理参数 { cacheType: 'all' } cacheType / olderThanMs / success / fail / complete
options.cacheType GalleryCacheType 清理范围 all all / thumbnail / export
options.olderThanMs number 只清理早于该时间的缓存 毫秒时间戳
options.success function 成功回调
options.fail function 失败回调
options.complete function 完成回调
import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro'

// 只清理缩略图缓存,不影响已经导出的上传临时文件。
GalleryPro.clearGalleryCache({ cacheType: 'thumbnail' })

返回值表

GalleryPermissionResult

字段 类型 说明
granted boolean 是否已获得可读取权限
status GalleryPermissionStatus 权限状态:authorized / limited / denied / restricted / notDetermined / unsupported
mediaType GalleryMediaType 本次检查或请求的媒体类型
limited boolean iOS 是否为有限照片权限
shouldOpenSettings boolean 是否建议引导用户打开系统设置
platform string 当前平台
message string 中文说明

GalleryQueryResult

字段 类型 说明
success boolean 是否成功
platform string 当前平台
mediaType GalleryMediaType 当前查询媒体类型
total number 当前条件下可见媒体总数
items Array<GalleryMediaItem> 当前页媒体列表
hasMore boolean 是否还有下一页
nextPageToken string 下一页令牌
message string 中文说明

GalleryMediaItem

字段 类型 说明
id string 稳定媒体 ID
mediaType GalleryMediaType image / video
fileName string 文件名
mimeType string MIME 类型
width / height number 宽高
durationMs number 视频时长,图片为 0
size number 文件大小,单位字节
createTime / modifiedTime number 创建和修改时间,毫秒时间戳
albumId / albumName string 相册 ID 和相册名称
sourceType / sourceLabel string 来源分类和中文说明
originalPath string 原始路径或平台资产标识
renderPath string 页面可显示路径,必要时先调用导出 API
uploadPath string 上传可用路径
thumbnailPath string 缩略图路径
requiresExport boolean 是否需要导出后才能稳定显示

GalleryExportResult

字段 类型 说明
success boolean 是否成功
id string 媒体 ID
renderPath string 页面可渲染路径
uploadPath string 上传可用路径
size number 导出文件大小
message string 中文说明

GalleryUploadResult

字段 类型 说明
success boolean 整体是否成功
successCount number 成功数量
failCount number 失败数量
items Array<GalleryUploadItemResult> 上传明细,顺序与 options.ids 一致
message string 中文说明

GalleryAlbumItem

字段 类型 说明
albumId string 相册 ID
albumName string 相册名称
sourceType GallerySourceType 来源分类
count number 媒体总数
imageCount number 图片数量
videoCount number 视频数量
coverThumbnailPath string 相册封面缩略图路径
latestMediaId string 最新媒体 ID
latestMediaType GalleryMediaType 最新媒体类型
latestFileName string 最新媒体文件名
latestCreateTime number 最新媒体创建时间

错误码

错误码 含义 说明
9070001 unsupported or context unavailable 当前平台不支持,或 App 上下文不可用
9070002 permission denied 相册读取权限未授权或请求失败
9070003 invalid argument 参数为空、ID 列表为空或格式不正确
9070004 media not found 指定媒体不存在,可能已被删除或 ID 不属于当前平台
9070005 thumbnail failed 缩略图生成失败
9070006 cache failed 缓存目录创建或写入失败
9070007 query failed 相册列表、分组或平台桥接查询失败
9070008 export failed 媒体导出失败,iOS 可能需要先下载 iCloud 原图
9070009 upload failed 上传过程失败
9070010 upload url empty 上传地址为空,dryRun=true 时可不传
9070011 network failed 网络请求失败或超时
9070012 cancelled 任务被取消或系统中断
9070013 file unavailable 导出后的文件不可访问
9070014 internal failed 插件内部异常,建议保留日志排查

权限与自定义基座

平台 是否支持 说明
uni-app App Android 支持 Android 13+ 使用图片/视频媒体权限;Android 12 及以下使用外部存储读取权限
uni-app App iOS 支持 使用 PhotoKit,支持完整权限和有限照片权限
uni-app x App Android 支持 API 与 uni-app 一致,示例使用 UVUE
uni-app x App iOS 支持 API 与 uni-app 一致,导出后返回可渲染路径
App HarmonyOS 暂不支持 不支持平台会明确失败,不伪造成功
Web / H5 暂不支持 不支持平台会明确失败,不伪造成功
微信小程序 / 支付宝小程序 暂不支持 不支持平台会明确失败,不伪造成功

App 端首次集成或修改 utssdk/app-androidutssdk/app-ios、权限配置、原生依赖后,需要重新制作并安装自定义基座。只修改页面示例、样式、README、普通脚本时,通常不需要重新打自定义基座。

Android 权限建议:

  • Android 13 及以上:系统会按图片、视频分别授予读取权限。
  • Android 12 及以下:使用外部存储读取权限。
  • 如果用户拒绝并勾选不再询问,业务应根据 shouldOpenSettings 引导用户到系统设置。

iOS 权限建议:

  • authorized 表示可读取完整相册。
  • limited 表示用户只授权了部分照片,插件会按系统可见范围读取。
  • 需要在原生配置中声明相册读取和保存相关用途说明。

注意事项

  • 页面只从插件根目录导入:import * as GalleryPro from '@/uni_modules/lizhao-gallery-pro',不要导入 utssdk 子路径。
  • 异步 API 都支持 success / fail / complete,业务可以统一做成功、失败和收尾处理。
  • 建议先调用 checkGalleryPermission,未授权再调用 requestGalleryPermission
  • 大图库请分页读取,不建议用超大 pageSize 做一次性全量读取;如确需全量读取,请使用 nextPageToken 循环读取下一页。
  • 列表页优先显示 thumbnailPath;需要原图预览或上传时,再调用 exportMediaToTempFile
  • renderPath 用于页面显示,uploadPath 用于上传;不同平台路径格式不同,业务不要自行拼接路径。
  • uploadGalleryMedia 的结果明细顺序与 options.ids 一致,index 是传入 ids 的原始序号。
  • 来源分类依赖系统相册目录、文件名和平台元数据,能覆盖相机、截图、微信、QQ、下载等常见来源,但不同 ROM 或应用保存目录可能存在差异。
  • clearGalleryCache({ cacheType: 'thumbnail' }) 只清理缩略图缓存,cacheType: 'export' 只清理导出缓存。
  • 不支持平台会明确失败,业务可通过 getGalleryCapabilities() 控制入口显示。

作者系列UTS插件

以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。

插件 能力方向 插件市场
lizhao-nfc-pro NFC 标签读写、NDEF、IsoDep 与诊断 查看插件
lizhao-float-window 悬浮窗、画中画、权限与诊断 查看插件
lizhao-device-id 设备标识、隐私策略与诊断 查看插件
lizhao-scan-pro 原生扫码、连续扫码、相册识别 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-smart-tts 系统 TTS、云端合成、听书方案 查看插件
lizhao-share-plus 系统分享、远程文件下载后分享 查看插件
lizhao-sqlite-pro 原生 SQLite、迁移、备份与诊断 查看插件
lizhao-icon-pro SVG 图标组件、多主题与缓存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件

隐私、权限声明

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

Android 需要读取图片/视频媒体权限;iOS 需要 NSPhotoLibraryUsageDescription 与 NSPhotoLibraryAddUsageDescription。

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

插件仅在用户授权后读取本机相册媒体索引和生成本地临时文件,不上传相册内容;如使用 uploadGalleryMedia,上传地址由业务方显式传入。

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

暂无用户评论。