最近在学习碰一碰分享的技术实现,参考Yanyan、董老丝有话说、哈莫尼OS、 Andy,小枫溪大佬们的指导和官方提供的实例,实现了碰一碰分享图片的能力。核心代码如下,主要分为三步

第一步:实现碰一碰链接成功后执行分享的代码(碰一碰响应函数),下面的代码实现了碰一碰链接成功后,分享沙盒目录中的example.jpg文件的能力。

**function ** konckShareCallback(sharableTarget: harmonyShare.SharableTarget) {
  const contextFaker: Context = getContext();
  let filePath = contextFaker.filesDir + '/example.jpg';
  let shareData: systemShare.SharedData = new systemShare.SharedData({
    utd: uniformTypeDescriptor.UniformDataType.JPEG,
    uri: fileUri.getUriFromPath(filePath),
    thumbnailUri: fileUri.getUriFromPath(filePath),
  });
  sharableTarget.share(shareData);
}

第二步:实现启动监听碰一碰事件的函数,在需要分享时调用,在该函数中监听碰一碰事件并关联响应函数,当有碰一碰行为时,会执行关联的函数。

export function  konckShareStartListening() {
  harmonyShare.on('knockShare', konckShareCallback);
}

第三步:实现停止监听碰一碰事件的函数,在退出分享时调用,在该函数中停止监听碰一碰事件监听。

export function ****konckShareStopListening() {
  harmonyShare.off('knockShare', konckShareCallback);
}

当源设备启动监听碰一碰事件后,有其它的设备(目标设备)完成碰一碰的动作时,这时源设备会执行碰一碰响应函数,提示用户是否要分享图片,点击分享后,目标设备接收图片保存至相册。