HarmonyOS 提供一个分享(share kit)的demo,且在点击分享弹出半模态窗口时能显示待分享视频的预览图

HarmonyOS 提供一个分享(share kit)的demo,且在点击分享弹出半模态窗口时能显示待分享视频的预览图

HarmonyOS
2024-08-23 00:06:54
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

以下是主要示例代码部分,可供参考,

async () => { 
  // 构造SharedData, 至少有一条数据 
  let shareUtd: string = ''; 
  if (canIUse('SystemCapability.DistributedDataManager.UDMF.Core')) { 
    shareUtd = utd.UniformDataType.HYPERLINK; 
  } 
  const color: ArrayBuffer = new ArrayBuffer(96); // 96为需要创建的像素buffer大小,取值为:height * width *4 
  let opts: image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 
  const pixelMap: image.PixelMap = await image.createPixelMap(color, opts); // 此处生成黑色示例图片,可参考 image.createPixelMap API生成自己的图片 
  const imagePackerApi: image.ImagePacker = image.createImagePacker(); 
  const buffer: ArrayBuffer = await imagePackerApi.packing(pixelMap, { 
    format: 'image/jpeg', 
    quality: 20, 
  }) 
  let shareData: systemShare.SharedData = new systemShare.SharedData({ 
    utd: shareUtd, 
    uri: 'https://xxx.xxx.com/asset/1b74c172df045ca8abe742b6896f944c/75d6057d1831d06f15b862dbe3b9e81c.mp4', 
    title: '这是视频Title', 
    description: '这是视频Description', 
    thumbnail: new Uint8Array(buffer) // 视频缩略图 
  }); 
  // 构建ShareController 
  let controller: systemShare.ShareController = new systemShare.ShareController(shareData); 
  // 获取上下文 
  let context = getContext(this) as common.UIAbilityContext; 
  // 传入UIAbility的上下文对象及分享配置,进行系统分享面板显示 
  controller.show(context, { 
    // 选用一种分享模式, 例如大图预览 
    previewMode: systemShare.SharePreviewMode.DEFAULT, 
    // 选用一种选择模式, 例如单选 
    selectionMode: systemShare.SelectionMode.SINGLE 
  }); 
}

由于底层跨进程启动有200K大小限制,所以sharekit建议thumbnail的大小不超过32K,sharekit本身也没有针对thumbnail进行接口层校验,超过32K时没有抛出错误码。

分享
微博
QQ
微信
回复
2024-08-23 20:06:39
相关问题
分享沙箱文件,应用可分享单个文件
952浏览 • 1回复 待解决
HarmonyOS原生分享能力使用
630浏览 • 1回复 待解决
HarmonyOS 分享功能如何实现?
95浏览 • 1回复 待解决
如何将图片文本视频分享给其他应用
775浏览 • 1回复 待解决
订阅emitter分享,谁有更好办法?
638浏览 • 1回复 待解决
鸿蒙如何实现分享功能
17488浏览 • 2回复 待解决
分享下你鸿蒙系统使用感受吧
4188浏览 • 1回复 待解决