更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 应用开发 > HarmonyOS鸿蒙应用开发之剪贴板功能实现,附代码参考

HarmonyOS鸿蒙应用开发之剪贴板功能实现,附代码参考

更新时间:2022-04-04 10:36:11浏览次数:720+次

本文介绍HarmonyOS鸿蒙应用开发之剪贴板(粘贴版)功能的实现,将附上关键的代码供开发者参考,以下是实际效果截图:

\

简介

剪贴板是一个常用的功能,用户通过系统剪贴板服务,可实现应用之间的简单数据传递。例如,在应用A中复制的数据,可以在应用B中粘贴,反之亦可。

关键代码如下

public class PasteboardUtils {

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

    private SystemPasteboard pasteboard;

    public PasteboardUtils(Context context) {

        initPasteboard(context);

    }

    // 复制到粘贴板

    public void copyText(String text) {

        pasteboard.setPasteData(PasteData.creatPlainTextData(text));

    }

    // 粘贴

    public String pasteText() {

        String result = "";

        PasteData pasteData = pasteboard.getPasteData();

        if (pasteData == null) {

            return result;

        }

        PasteData.DataProperty dataProperty = pasteData.getProperty();

        boolean hasHtml = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_HTML);

        boolean hasText = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_PLAIN);

        if (hasHtml || hasText) {

            for (int i = 0; i < pasteData.getRecordCount(); i++) {

                PasteData.Record record = pasteData.getRecordAt(i);

                String mimeType = record.getMimeType();

                if (mimeType.equals(PasteData.MIMETYPE_TEXT_HTML)) {

                    result = record.getHtmlText();

                } else if (mimeType.equals(PasteData.MIMETYPE_TEXT_PLAIN)) {

                    result = record.getPlainText().toString();

                } else {

                    HiLog.info(TAG, "%{public}s", "getPasteData mimeType :" + mimeType);

                }

            }

        }

        return result;

    }

    //   监听粘贴版内容

    private final IPasteDataChangedListener listener = new IPasteDataChangedListener() {

        @Override

        public void onChanged() {

            PasteData pasteData = pasteboard.getPasteData();

            if (pasteData != null) {

                HiLog.info(TAG,"粘贴版内容改变:"+pasteData);

            }

        }

    };

    //  清空粘贴板

    public void clearPasteboard(Component component) {

        if (pasteboard != null) {

            pasteboard.clear();

        }

    }

    //初始化

    private void initPasteboard(Context context) {

        pasteboard = SystemPasteboard.getSystemPasteboard(context);

        pasteboard.addPasteDataChangedListener(listener);

    }

}

源代码地址

完整代码地址:https://gitee.com/jltfcloudcn/jump_to/tree/master/jltf_YKX