WDSystemShare.ets 2.31 KB
import { ShareContent, ShareContentImageAndText, ShareContentLink, ShareContentText,
  ShareContentType,
  ShareScene } from '../Constant';
import { WDShareInterface } from '../WDShareInterface';
import { AsyncCallback } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
import { systemShare } from '@kit.ShareKit';
import { uniformTypeDescriptor as utd } from '@kit.ArkData';

export class WDSystemShare implements WDShareInterface {

  shareContent(scene: ShareScene, content: ShareContent, contentType: ShareContentType): Promise<string> {

    return new Promise((resolve, fail) => {
      try {

        let controller: systemShare.ShareController = new systemShare.ShareController(this.getShareData(content, contentType));
        let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext

        controller.on('dismiss', () => {

          resolve("dismiss")
        });

        controller.show(context, {
          previewMode: systemShare.SharePreviewMode.DEFAULT,
          selectionMode: systemShare.SelectionMode.SINGLE
        });

        console.log("分享控制器调用完成")
      } catch (e) {
        fail(e)
      }
    })
  }

  getShareData(content: ShareContent, contentType: ShareContentType) : systemShare.SharedData {
    if (contentType === ShareContentType.PrueText) {
      let prueText = content as ShareContentText
      console.log("分享纯文本")
      return new systemShare.SharedData({
        utd: utd.UniformDataType.PLAIN_TEXT,
        content: prueText.text
      });
    }

    if (contentType === ShareContentType.ImageAndText) {
      let imageAndText = content as ShareContentImageAndText
      console.log("分享图片和文本")
      let data: systemShare.SharedData = new systemShare.SharedData({
        utd: utd.UniformDataType.PLAIN_TEXT,
        content: imageAndText.title
      });
      data.addRecord({
        utd: utd.UniformDataType.PNG,
        uri: imageAndText.imgURI
      });
      return data
    }

    console.log("分享链接和文本")
    let link = content as ShareContentLink
    let data: systemShare.SharedData = new systemShare.SharedData({
      utd: utd.UniformDataType.PLAIN_TEXT,
      content: link.title
    });
    data.addRecord({
      utd: utd.UniformDataType.HYPERLINK,
      uri: link.link
    });
    return data
  }


}