# PasteBoardTest **Repository Path**: cxshu/paste-board-test ## Basic Information - **Project Name**: PasteBoardTest - **Description**: 本示例演示了 HarmonyOS 系统剪贴板的写入数据和读取数据 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-16 - **Last Updated**: 2021-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、概述 用户通过系统剪贴板服务,可实现应用之间的简单数据传递。例如:在应用A中复制的数据,可以在应用B中粘贴,反之亦可。 在使用剪贴板服务时,需要注意以下几点: * 只有在前台获取到焦点的应用才有读取系统剪贴板的权限(系统默认输入法应用除外)。 * 写入到剪贴板服务中的剪贴板数据不会随应用程序结束而销毁。 * 对同一用户而言,写入剪贴板服务的数据会被下一次写入的剪贴板数据所覆盖。 * 在同一设备内,剪贴板单次传递内容不应超过500KB。 # 二、开发步骤 获取系统剪贴板服务 ```java SystemPasteboard pasteboard = SystemPasteboard.getSystemPasteboard(appContext); ``` 向系统剪贴板中写入一条纯文本数据 ```java if (pasteboard != null) { pasteboard.setPasteData(PasteData.creatPlainTextData("Hello, world!")); } ``` 获取数据对象中首个内容节点的纯文本内容 ```java PasteData pasteData = pasteboard.getPasteData(); CharSequence primaryText = pasteData.getPrimaryText(); ``` 从系统剪贴板读取数据,将数据对象中的首个文本类型(纯文本/HTML)内容信息在控件中显示,忽略其他类型内容。 ```java PasteData pasteData = pasteboard.getPasteData(); if (pasteData == null) { return; } DataProperty dataProperty = pasteData.getProperty(); boolean hasHtml = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_HTML); boolean hasText = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_PLAIN); if (hasHtml || hasText) { Text text = (Text) findComponentById(ResourceTable.Id_text); 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)) { text.setText(record.getHtmlText()); break; } else if (mimeType.equals(PasteData.MIMETYPE_TEXT_PLAIN)) { text.setText(record.getPlainText().toString()); break; } else { // skip records of other Mime type } } } ``` 注册观察者 ```java IPasteDataChangedListener listener = new IPasteDataChangedListener() { @Override public void onChanged() { PasteData pasteData = pasteboard.getPasteData(); if (pasteData == null) { return; } System.out.println(pasteData.getPrimaryText()); // Operations to handle data change on the system pasteboard } }; pasteboard.addPasteDataChangedListener(listener); ```