更新记录

1.0.0(2026-06-29)

  • 首发版本
  • 支持监听外部应用通过系统「打开方式」传入的文件数据
  • 支持监听外部应用通过系统「分享」传入的文件数据
  • 支持单文件分享(ACTION_SEND)和多文件分享(ACTION_SEND_MULTIPLE)
  • 支持通过 URL Scheme 打开(iOS)
  • 支持文件信息读取(文件名、路径、大小、MIME类型)
  • 支持 Android 和 iOS 双平台
  • 支持 uni-app 和 uni-app-x

平台兼容性

uni-app(5.07)

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

uni-app x(5.07)

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

cc-open-with

监听外部应用通过系统「打开方式」或「分享」功能传入的文件数据,支持 Android 和 iOS 平台。

适用场景

  • 用户在文件管理器中选中文件,选择用你的 App 打开
  • 用户在其他 App(如相册、浏览器)中分享文件到你的 App
  • 用户通过 URL Scheme 打开你的 App 并携带文件

使用方法

1. 调用 openWith 监听外部文件

在 App.vue 的 onLaunch 或页面 onLoad 中调用 openWith 注册回调,即可获取外部传入的文件数据。

import { openWith } from '@/uni_modules/cc-open-with';

openWith({
  success(res) {
    console.log('收到外部文件:', res.files);
    // res.files 为数组,每个元素包含 name、path、size、type
  },
  fail(err) {
    console.error('获取失败:', err.errMsg);
  },
  complete(res) {
    console.log('调用完成');
  }
});

2. 返回的文件信息

interface OpenWithFile {
  name: string;      // 文件名
  path: string;      // 文件路径(Android 为 content:// URI,iOS 为 file:// 本地路径)
  size: number;      // 文件大小(字节)
  type: string | null; // MIME 类型
}

3. 错误码

errCode 说明
0 成功
9010001 未接收到外部文件数据
9010002 获取文件信息失败

原生配置

Android

插件已内置 AndroidManifest.xml 配置,自动注册 OpenWithActivity 并声明以下 intent-filter:

  • ACTION_VIEW: 支持图片、视频、音频、PDF、Word、Excel、PPT、纯文本及通用文件
  • ACTION_SEND: 接收单文件分享
  • ACTION_SEND_MULTIPLE: 接收多文件分享

如需调整支持的文件类型,修改 utssdk/app-android/AndroidManifest.xml 中的 intent-filter 即可。

iOS

插件已内置 info.plist 配置,通过 CFBundleDocumentTypes 声明支持的文件类型:

  • 图片(JPEG、PNG、GIF、BMP、WebP、TIFF、HEIC、SVG)
  • PDF 文档
  • Word 文档
  • Excel 文档
  • PPT 文档
  • 视频
  • 音频
  • 纯文本
  • 通用数据(兜底)

同时启用 UIFileSharingEnabled(iTunes 文件共享)和 LSSupportsOpeningDocumentsInPlace(原地打开文档)。

注意事项

  1. openWith 建议在 App.vueonLaunch 中尽早调用,以确保不遗漏外部传入的文件。
  2. Android 平台通过 content:// URI 返回文件路径,可以使用相关API 进行后续处理。
  3. iOS 平台会将外部文件拷贝到 App 临时目录后再返回路径,避免安全作用域限制。
  4. 需要自定义基座才会生效

示例

// App.vue
import { openWith } from '@/uni_modules/cc-open-with';

export default {
  onLaunch() {
    openWith({
      success(res) {
        uni.showToast({
          title: `收到 ${res.files.length} 个文件`,
          icon: 'none'
        });
        // 处理文件...
      },
      fail(err) {
        console.log('没有外部文件传入');
      }
    });
  }
}

隐私、权限声明

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

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

插件不采集任何数据

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

暂无用户评论。