[文章]HarmonyOS应用开发-剪贴板功能实现

阅读量0
0
0
粘贴版是一个常用的功能,用户通过系统剪贴板服务,可实现应用之间的简单数据传递。例如:在应用A中复制的数据,可以在应用B中粘贴,反之亦可。
效果如图:
图片1.png
关键代码如下:
  1. public class PasteboardUtils {

  2.     private static final HiLogLabel TAG = new HiLogLabel(HiLog.LOG_APP,0x0,"蛟龙腾飞--粘贴版");

  3.     private SystemPasteboard pasteboard;

  4.     public PasteboardUtils(Context context) {
  5.         initPasteboard(context);
  6.     }
  7.     // 复制到粘贴板
  8.     public void copyText(String text) {
  9.         pasteboard.setPasteData(PasteData.creatPlainTextData(text));
  10.     }

  11.     // 粘贴
  12.     public String pasteText() {
  13.         String result = "";
  14.         PasteData pasteData = pasteboard.getPasteData();
  15.         if (pasteData == null) {
  16.             return result;
  17.         }
  18.         PasteData.DataProperty dataProperty = pasteData.getProperty();
  19.         boolean hasHtml = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_HTML);
  20.         boolean hasText = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_PLAIN);
  21.         if (hasHtml || hasText) {
  22.             for (int i = 0; i < pasteData.getRecordCount(); i++) {
  23.                 PasteData.Record record = pasteData.getRecordAt(i);
  24.                 String mimeType = record.getMimeType();
  25.                 if (mimeType.equals(PasteData.MIMETYPE_TEXT_HTML)) {
  26.                     result = record.getHtmlText();
  27.                 } else if (mimeType.equals(PasteData.MIMETYPE_TEXT_PLAIN)) {
  28.                     result = record.getPlainText().toString();
  29.                 } else {
  30.                     HiLog.info(TAG, "%{public}s", "getPasteData mimeType :" + mimeType);
  31.                 }
  32.             }
  33.         }
  34.         return result;
  35.     }

  36.     //   监听粘贴版内容
  37.     private final IPasteDataChangedListener listener = new IPasteDataChangedListener() {

  38.         @Override
  39.         public void onChanged() {
  40.             PasteData pasteData = pasteboard.getPasteData();
  41.             if (pasteData != null) {
  42.                 HiLog.info(TAG,"粘贴版内容改变:"+pasteData);
  43.             }
  44.         }
  45.     };

  46.     //  清空粘贴板
  47.     public void clearPasteboard(Component component) {
  48.         if (pasteboard != null) {
  49.             pasteboard.clear();
  50.         }
  51.     }

  52.     //初始化
  53.     private void initPasteboard(Context context) {
  54.         pasteboard = SystemPasteboard.getSystemPasteboard(context);
  55.         pasteboard.addPasteDataChangedListener(listener);
  56.     }
复制代码
完整代码地址:

附件:

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友