更新记录

1.0.2(2026-03-30)

一、bug修复

1.0.1(2026-03-30)

一、文档更新

1.0.0(2026-03-30)

一、新版本的首发

查看更多

平台兼容性

uni-app(4.82)

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

uni-app x(4.85)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

hl-pickphoto-uts

App 端原生相册/视频选择器 UTS 插件:多选、筛选、预览与 Exif 读取。Android / iOS 为自定义全屏选图(顶栏 Tab + 滑动指示条等,行为对齐);HarmonyOS(鸿蒙) 使用系统 PhotoViewPicker,交互为系统相册界面,回调数据结构与三端一致。

UTS 环境兼容性

uni-app uni-app x

实际能力以 App(app-android / app-ios / app-harmony) 为主;H5/小程序等需自行条件编译或降级方案。


功能概览

  • pickMedia:打开原生选择界面,支持多选;回调结果为 JSON 数组字符串(见下文)。
  • getExif:根据本地文件路径读取 Exif(回调为 UTSJSONObject)。
  • 筛选:Android / iOS 为全部 / 视频 / 照片(ViewPager / 分页切换);鸿蒙由系统 PhotoViewPicker 提供类型筛选(图片+视频),无应用内 Tab。
  • 路径:iOS、鸿蒙均会将所选媒体拷贝到应用沙箱(临时/缓存目录)后再返回路径,便于 WebView 等业务使用;path 为绝对路径字符串。鸿蒙侧 date 多为拷贝后文件的修改时间(mtime)。

安装与导入

插件位于 uni_modules/hl-pickphoto-uts,无需额外 npm 包。

import * as pickphoto from '@/uni_modules/hl-pickphoto-uts'
// 类型定义(可选)
import type { MediaResult } from '@/uni_modules/hl-pickphoto-uts/utssdk/interface.uts'

API

pickMedia(callback: PickMediaCallback): void

打开媒体选择器。

参数 说明
callback (resJson: string) => voidresJsonJSON 数组字符串,解析后每一项形状同下表 MediaResult。取消或未选时多为 []

为何是字符串?
原生侧用 JSONSerialization / org.json 生成 JSON;若直接传 UTSJSONObject 数组经桥接到 Vue 层可能变成空 {},因此统一为字符串,业务侧 JSON.parse 使用。

MediaResult(解析后每一项)

字段 类型 说明
path string 本地绝对路径
name string 文件名
date number 创建/修改时间戳(毫秒)
size number 字节大小
latitude number 纬度(无则 0)
longitude number 经度(无则 0)
isVideo boolean 是否为视频

getExif(path: string, callback: ExifCallback): void

读取指定路径媒体的 Exif。

参数 说明
path pickMedia 返回的 path 一致
callback (res: UTSJSONObject) => void,字段依文件而定

使用示例

import * as pickphotoClient from '@/uni_modules/hl-pickphoto-uts'

pickphotoClient.pickMedia((resJson) => {
  const list = JSON.parse(resJson) as Array<{
    path: string
    name: string
    date: number
    size: number
    latitude: number
    longitude: number
    isVideo: boolean
  }>
  console.log('选中数量', list.length)
  list.forEach((item) => {
    console.log(item.path, item.isVideo)
  })
})

pickphotoClient.getExif('/path/to/file.jpg', (res) => {
  console.log('Exif', res)
})

在 uni-app 页面里预览图片/视频时,path 有时需转为 WebView 可识别的本地 URL(例如 plus.io.resolveLocalFileSystemURLuni.getImageInfopath)。可参考工程内演示页 pages/hl-pickphoto-demo/index.vue 中的 resolveAppLocalMediaUrldisplaySrc 写法。


隐私、权限声明

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

Android:读取图片/视频及媒体位置等相关存储与媒体权限(随系统版本为 READ_MEDIA_* / READ_EXTERNAL_STORAGE、ACCESS_MEDIA_LOCATION 等);iOS:需要相册/照片读取能力(随工程 Privacy 配置);HarmonyOS:选图走系统 PhotoViewPicker,插件 HAR 不声明相册读权限;若宿主 entry 仍含其它 ACL 受限权限,需按 DCloud 文档配置调试签名

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

会访问用户相册中的图片与视频;HarmonyOS 及部分场景会将所选文件拷贝到应用缓存目录以便读取与 EXIF 解析,不在服务端收集

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

暂无用户评论。