通过分享面板发起分享
接口说明
表1 宿主应用发起分享接口功能介绍
| 类名 | 接口名 | 描述 |
|---|---|---|
| SharedData | constructor(record: SharedRecord) | SharedData构造函数 |
| SharedData | addRecord(record: SharedRecord): void | 添加分享记录 |
| SharedData | getRecords(): Array<SharedRecord> | 获取分享记录 |
| ShareController | constructor(data: SharedData) | ShareController构造函数 |
| ShareController | show(context: common.UIAbilityContext, options: ShareControllerOptions): Promise<void> | 显示分享面板 |
| ShareController | on(event: 'dismiss', callback: () => void): void | 注册分享面板关闭事件监听 |
| ShareController | off(event: 'dismiss', callback: () => void): void | 取消分享面板关闭事件监听 |
开发步骤
根据不同的分享场景,参考下表:
| 分享场景 | 参考链接 |
|---|---|
| 分享App Linking直达应用 | 分享App Linking直达应用 |
| 分享图片 | 分享图片 |
| 分享视频 | 分享视频 |
| 分享普通链接直达浏览器 | 分享普通链接直达浏览器 |
| 分享文本 | 分享文本 |
2in1设备可通过配置的方式决定分享面板的显示位置。 参考如下:
-
导入相关模块。
import { common } from '@kit.AbilityKit';import { systemShare } from '@kit.ShareKit';import { uniformTypeDescriptor as utd } from '@kit.ArkData'; -
构造分享数据,可添加多条分享记录。
// 构造ShareData,需配置一条有效数据信息let data: systemShare.SharedData = new systemShare.SharedData({utd: utd.UniformDataType.PLAIN_TEXT,content: 'Hello HarmonyOS'}); -
启动分享面板时,配置分享面板显示的位置信息或关联的组件ID,面板将以Popup形式展示。
// 构建ShareControllerlet 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');// 分享结束,可处理其他业务。});// 进行分享面板显示// 方法一:配置分享面板关联的控件IDcontroller.show(context, {anchor: 'shareButtonId'});// 方法二:配置分享面板显示的坐标controller.show(context, {anchor: {// 必选 相对锚点的窗体偏移值windowOffset: { x: 100, y: 100 },// 可选 组件的宽高 配置后会综合计算组件的大小size: { width: 0, height: 0 }}});