一、Share Kit 分享服务

Share Kit为应用提供文本、图片、视频等内容跨应用、跨端分享能力。应用把需要分享的内容和预览样式配置给Share Kit,Share Kit将根据不同的场景进行使用:

  • 应用间分享:根据数据类型、数量等信息构建分享面板

  • 跨端分享:根据数据类型、数量等信息构建预览界面

二、先关说明

概念 说明
宿主应用 分享行为的发起者,通过调用分享接口展示分享面板
目标应用 分享内容的接收者,需构建数据处理能力并声明
内容区 显示分享内容标题、预览、选择等信息
推荐区 对接华为分享和意图框架,推荐能处理内容的设备和目标应用用户
分享方式区 通过包管理服务获取支持分享内容的目标应用
操作区 系统提供的复制、保存、另存为、打印等能力

三、运行机制

应用类型 相关逻辑
宿主应用 提供分享入口,配置分享内容,拉起系统分享面板
目标应用 构建数据处理能力组件,可选捐献联系人信息到意图框架

四、限制

4.1 设备限制

能力 手机 平板 PC/2in1 TV
系统分享 支持 支持 支持 部分支持(仅分享到周边设备)
碰一碰分享 支持 支持 支持 不支持
隔空传送 支持 支持 支持 不支持

4.2 使用限制

限制 说明
数据类型 须遵照UDMF(统一数据管理框架)定义的UTD(统一类型描述符)规范
数据量 单次分享配置数据总量不能超过200KB,分享条目总量不能超过500条

五、系统分享接入模式

接入模式 说明 适用场景
全接模式 直接使用系统分享面板 华为自研应用,无商业诉求,降低开发成本
半接模式 自行开发分享能力面板,同时提供系统分享入口 有商业诉求,或有自己独有的业务逻辑

六、核心接口

类名 接口 描述
SharedData constructor(record) SharedData构造函数
SharedData addRecord(record) 添加分享记录
SharedData getRecords() 获取分享记录
ShareController constructor(data) ShareController构造函数
ShareController show(context, options) 显示分享面板
ShareController on('dismiss', callback) 注册分享面板关闭事件监听
ShareController off('dismiss', callback) 取消分享面板关闭事件监听

七、开发步骤

7.1 导入模块

import { common } from '@kit.AbilityKit';
import { systemShare } from '@kit.ShareKit';
import { uniformTypeDescriptor as utd } from '@kit.ArkData';

7.2 构造分享数据

// 构造ShareData,需配置一条有效数据信息
let data: systemShare.SharedData = new systemShare.SharedData({
  utd: utd.UniformDataType.PLAIN_TEXT,
  content: 'Hello HarmonyOS'
});

7.3 启动分享面板

// 构建ShareController
let controller: systemShare.ShareController = new systemShare.ShareController(data);

// 获取UIAbility上下文对象
let uiContext: UIContext = this.getUIContext();
let context: common.UIAbilityContext = uiContext.getHostContext() as common.UIAbilityContext;

// 注册分享面板关闭监听
controller.on('dismiss', () => {
  console.info('Share panel closed');
});

// 方法一:配置分享面板关联的控件ID
controller.show(context, {
  anchor: 'shareButtonId'
});

// 方法二:配置分享面板显示的坐标
controller.show(context, {
  anchor: {
    windowOffset: { x: 100, y: 100 },  // 相对锚点的窗体偏移值
    size: { width: 0, height: 0 }       // 组件的宽高
  }
});

八、全接模式 vs 半接模式

对比项 全接模式 半接模式
分享面板 使用系统分享面板 自行开发分享面板
系统分享入口 直接使用 需提供入口按钮
开发成本 较高
商业诉求

核心要点

要点 说明
核心类 SharedData(分享数据)、ShareController(分享面板控制器)
数据限制 总量≤200KB,条目≤500条
数据类型 须遵循UTD规范
接入模式 全接模式(系统面板)、半接模式(自定义面板+系统入口)

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐