更新记录

1.0.0(2026-09-27)

  • 首发版本
  • 三端(Android/iOS/HarmonyOS)媒体枚举:图片/视频/音频分类浏览
  • Android 10+ 免权限(MediaStore);iOS/鸿蒙自动申请相册权限
  • 深色系好看 UI:分类 Tab、搜索、网格多选、时长角标、已选计数
  • 静态 API:requestMediaPermission / getMediaList / loadThumb / copyToApp / copyToAppBatch
  • 统一错误码 9002001-9002006

平台兼容性

uni-app x(4.21)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序
- - √ 1.0.0 √ 1.0.0 √ 1.0.0 -

文件选择器·媒体浏览器(mj-file-picker)

支持 uni-app x(App 端:Android / iOS / HarmonyOS)的免权限媒体文件浏览与多选组件。

  • Android:基于 MediaStore 枚举全部文件(图片/视频/音频/文档等),自动申请媒体读取权限(targetSdk≥33 申请 READMEDIA*,否则 READ_EXTERNAL_STORAGE);AOSP Android 10+ 免权限即可全量枚举,华为鸿蒙等厂商系统需授予存储权限后返回全量
  • iOS:基于 Photos 框架枚举相册(需相册权限,插件自动申请)
  • 鸿蒙:基于 photoAccessHelper 枚举相册(需相册权限,插件自动申请)
  • 自带深色系好看 UI:分类 Tab(全部/图片/视频/音频/文件)、搜索、网格浏览、时长角标、滚动分页加载
  • 点击文件直接预览:图片大图 / 视频播放 / 音频与文档信息卡片,无需“勾选-确认”流程
  • 提供静态 API:枚举 / 缩略图 / 复制到应用沙盒,可完全脱离组件使用

快速使用(组件方式)

<mj-file-picker type="all" @preview="onPreview"></mj-file-picker>
import { FileInfo } from "../../uni_modules/mj-file-picker/utssdk/interface.uts"

function onPreview(item: FileInfo) {
    // 点击文件时触发(组件内部同时弹出预览层)
}
属性 类型 默认值 说明
type string 'all' 浏览类型:all / image / video / audio / file(file=仅文档等非媒体文件)
showSearch boolean true 是否显示搜索框
safeArea boolean false 组件独立贴顶时预留状态栏高度
事件 参数 说明
preview FileInfo 点击文件预览时触发

静态 API(不依赖组件)

import { requestMediaPermission, getMediaList, loadThumb, copyToApp, copyToAppBatch } from "@/uni_modules/mj-file-picker"

// 1. 请求权限(Android 直接回调 true)
requestMediaPermission((granted: boolean) => {})

// 2. 枚举媒体文件
getMediaList({ type: "image", limit: 500, copyToApp: false }, (files: Array<FileInfo>) => {
}, (err: PickerFail) => {
})

// 3. 生成缩略图(返回本地图片路径,可直接用于 image 组件)
loadThumb(item.uri, 512, (path: string) => {
})

// 4. 复制到应用沙盒(返回真实文件路径,可读可编辑)
copyToApp(item.uri, "picker", (path: string) => {
})

// 5. 批量复制
copyToAppBatch(uris, "picker", (paths: Array<string>) => {
})

FileInfo 字段

字段 类型 说明
id string 平台唯一标识
name string 文件名(iOS 为 IMG_+ID 前缀)
uri string 平台 uri(content:// 或 ph://),传给 loadThumb/copyToApp
path string 复制到应用目录后的真实路径
size number 字节数(iOS 暂不可用为 0)
mimeType string MIME 类型
type 'image' | 'video' | 'audio' | 'file' 媒体类型(file=非媒体文件)
modifiedTime number 修改时间(毫秒)
duration number 时长(毫秒,视频/音频)
width / height number 宽高(像素,图片/视频)

错误码

错误码 说明
9002001 媒体枚举失败
9002002 相册权限被拒绝
9002003 缩略图生成失败
9002004 文件复制失败
9002005 uri 无效
9002006 参数错误

兼容性与权限声明

  • 仅支持 uni-app x(App 端),不支持 uni-app(vue)、web、小程序
  • Android:Android 5.0+。应用需声明媒体读取权限:targetSdk≥33 声明 READ_MEDIA_IMAGES/READ_MEDIA_VIDEO/READ_MEDIA_AUDIO;targetSdk<33 声明 READ_EXTERNAL_STORAGE(插件已自带 AndroidManifest.xml 权限声明,随插件合入应用)。AOSP Android 10-12 实际枚举无需授权,但华为鸿蒙等厂商系统未授权时 MediaStore 只返回应用自有的媒体文件,务必调用 requestMediaPermission 申请并获授权后再枚举
  • iOS:iOS 12+,需相册权限(NSPhotoLibraryUsageDescription),插件自动申请
  • 鸿蒙:需相册权限(ohos.permission.READ_IMAGEVIDEO),插件自动申请;鸿蒙相册仅图片/视频,"文件"类型返回空
  • iOS 端 copyToApp 仅支持图片原图导出(视频/音频暂仅浏览);"文件"类型 iOS 相册无此概念返回空
  • 插件不采集任何数据、无任何网络请求

试用

  • 该插件已开通“自定义基座试用”,开发者可在 manifest 勾选插件后运行到自定义基座试用
  • 试用期可完整体验全部功能

隐私、权限声明

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

Android:无需权限(Android 10+ MediaStore 查询免权限);iOS:相册权限(NSPhotoLibraryUsageDescription,浏览相册时申请);鸿蒙:ohos.permission.READ_IMAGEVIDEO(浏览相册时申请)

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

插件不采集任何数据,仅在本机枚举媒体文件并返回文件信息,无任何网络请求。

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

无

暂无用户评论。