# miscservices_pasteboard **Repository Path**: geekgaoxiang/miscservices_pasteboard ## Basic Information - **Project Name**: miscservices_pasteboard - **Description**: Pasteboard System Ability | 剪贴板服务 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 297 - **Created**: 2022-05-12 - **Last Updated**: 2022-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 剪贴板服务 ## 简介 剪贴板服务作为杂散子系统的功能组件,提供管理系统剪贴板的能力,为系统复制、粘贴功能提供支持。系统剪切板支持包文本、超本文、URIs等内容操作。 **图 1** 子系统架构图 ![](figures/subsystem_architecture_zh.png "子系统架构图") ​ 剪贴板服务,提供支撑应用开发者方便、高效的使用剪贴板相关业务的功能。其主要组件包括剪贴板管理客户端和剪贴板服务。剪贴板管理客户端负责剪贴板接口管理,提供剪贴板北向JS API给应用;在应用框架侧创建剪贴板数据、请求剪贴板SA执行剪贴板的新建、删除、查询、转换文本、配置等。剪贴板服务负责剪贴板事件管理,管理剪贴板SA的生命周期(启动、销毁、多用户等);执行应用请求,通知剪贴板数据管理,并将结果返回给剪贴板管理客户端。 ## 目录 ``` /base/miscservices/time ├── etc # 组件包含的进程的配置文件 ├── figures # 构架图 ├── framework # innerKit接口 ├── interfaces # 组件对外提供的接口代码 │ └── kits # 对应用提供的接口 ├── profile # 组件包含的系统服务的配置文件 ├── services # 剪贴板服务实现 │ └── core # 核心代码实现 │ └── test # native测试代码 │ └── zidl # 跨进程通信代码实现 ├── utils # 测试或服务使用mock的数据 └──README_zh.md # 使用说明 ``` ## 说明 ### 接口说明 **表 1** PasteBoard开放的主要方法

接口名

描述

createHtmlData(htmlText: string): PasteData;

为HTML类型的数据创建一个MIMETYPE_TEXT_HTML类型的PasteData 对象

createWantData(want: Want): PasteData;

为want类型的数据创建一个MIMETYPE_TEXT_WANT类型的PasteData对象

createPlainTextData(text: string): PasteData

为纯文本类型的数据创建一个MIMETYPE_TEXT_PLAIN类型的PasteData 对象

createUriData(uri: string): PasteData;

为URI类型的数据创建一个MIMETYPE_TEXT_URI类型的PasteData 对象

createHtmlTextRecord(htmlText: string): PasteDataRecord;

为超文本类型的数据创建一个RecordMIMETYPE_TEXT_HTML类型的PasteDataRecord对象

createWantRecord(want: Want): PasteDataRecord;

为want类型的数据创建一个MIMETYPE_TEXT_WANT类型的PasteDataRecord对象

createPlainTextRecord(text: string): PasteDataRecord;

为纯文本类型的数据创建一个MIMETYPE_TEXT_PLAIN类型的PasteDataRecord对象

createUriRecord(uri: string): PasteDataRecord;

为URI类型的数据创建一个MIMETYPE_TEXT_URI类型的PasteDataRecord对象

getSystemPasteboard(): SystemPasteboard

获取系统剪贴板

**表 2** SystemPasteboard开放的主要方法

接口名

描述

on(type:'update', callback: () => void): void;

打开粘贴板内容更改时调用的回调

off(type: 'update', callback?: () => void): void

关闭粘贴板内容更改时调用的回调

clear(callback: AsyncCallback): void

清除剪贴板

clear(): Promise;

清除剪贴板

getPasteData(callback: AsyncCallback<PasteData>): void

获取系统剪贴板数据对象

getPasteData():Promise<PasteData>

获取系统剪贴板数据对象

hasPasteData(callback: AsyncCallback<boolean>:void;

检查粘贴板中是否有内容

hasPasteData(): Promise<boolean>

检查粘贴板中是否有内容

setPasteData(data: PasteData, callback: AsyncCallback<void>:void;

将 PasteData 写入粘贴板

setPasteData(data: PasteData): Promise<void>

将 PasteData 写入粘贴板

**表 3** PasteData开放的主要方法

接口名

描述

addHtmlRecord(htmlText: string): void;

将 HTML 文本记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_HTML。

addWantRecord(want: Want): void;

将want记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_WANT

addRecord(record: PasteDataRecord): void;

将 PasteRecord 添加到粘贴数据对象并更新数据属性中的 MIME 类型

addTextRecord(text: string): void;;

将纯文本记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_PLAIN

addUriRecord(uri: string): void;

将 URI 记录添加到 PasteData 对象,并将 MIME 类型更新为 DataProperty 中的 PasteData#MIMETYPE_TEXT_URI

getMimeTypes(): Array<string>

粘贴板上所有内容的 MIME 类型

getPrimaryHtml(): string;

PasteData 对象中主要记录的 HTML 文本

getPrimaryWant(): Want;

PasteData 对象中的主记录的want

getPrimaryMimeType(): string;

PasteData 对象中主记录的 MIME 类型。

getPrimaryUri(): string;

PasteData 对象中主记录的 URI

getProperty(): PasteDataProperty;

获取剪贴板数据对象的属性

getRecordAt(index: number): PasteDataRecord;

基于指定索引的记录

getRecordCount(): number;

PasteData 对象中的记录数

hasMimeType(mimeType: string): boolean;

检查 DataProperty 中是否存在指定的 MIME 类型的数据

removeRecordAt(index: number): boolean;

根据指定索引删除记录

replaceRecordAt(index: number, record: PasteDataRecord): boolean;

用新记录替换指定记录

**表 4** PasteDataRecord开放的主要方法

接口名

描述

convertToText(callback: AsyncCallback<string>): void;

将 PasteData 转换为文本内容的内容

convertToText(): Promise<void>

将 PasteData 转换为文本内容的内容

**表 5** PasteDataProperty参数说明

名称

类型

说明

additions{[key:string]}

object

附加属性数据键值对

mimeTypes

Array

PasteData 中所有记录的非重复 MIME 类型

tag

string

PasteData 对象的用户定义标签

timestamp

number

时间戳,指示何时将数据写入系统粘贴板。

localOnly

boolean

检查 PasteData 是否设置为仅用于本地访问。

### 使用说明 剪贴板模块使用示例: ``` // 导入模块 import pasteboard from '@ohos.pasteboard' //文本拷贝 console.log('Get SystemPasteboard') var systemPasteboard = pasteboard.getSystemPasteboard() systemPasteboard.clear() var textData = 'Hello World!' console.log('createPlainTextData = ' + textData) var pasteData = pasteboard.createPlainTextData(textData) console.log('Writes PasteData to the pasteboard') systemPasteboard.setPasteData(pasteData) console.log('Checks there is content in the pasteboard') assert.equal(systemPasteboard.hasPasteData(), true) console.log('Checks the number of records') pasteData = systemPasteboard.getPasteData() assert.equal(pasteData.getRecordCount(), 1) console.log('Checks the pasteboard content') assert.equal(pasteData.getPrimaryText(), textData) console.log('Checks there is a MIMETYPE_TEXT_PLAIN MIME type of data') assert.equal(pasteData.hasMimeType(MIMETYPE_TEXT_PLAIN), true) assert.equal(pasteData.getPrimaryMimeType(), MIMETYPE_TEXT_PLAIN) //剪贴板变化监听 console.log('Off the content changes') var systemPasteboard = pasteboard.getSystemPasteboard() systemPasteboard.off(contentChanges) systemPasteboard.clear() var textData = 'Hello World!' console.log('createUriData = ' + textData) var pasteData = pasteboard.createUriData(textData) console.log('Writes PasteData to the pasteboard') systemPasteboard.setPasteData(pasteData) console.log('Checks there is content in the pasteboard') assert.equal(systemPasteboard.hasPasteData(), true) console.log('Checks the number of records') pasteData = systemPasteboard.getPasteData() assert.equal(pasteData.getRecordCount(), 1) console.log('On the content changes') systemPasteboard.on(contentChanges) console.log('Removes the Record') assert.equal(pasteData.removeRecordAt(0), true) console.log('Writes PasteData to the pasteboard') systemPasteboard.setPasteData(pasteData) console.log('Checks the number of records') pasteData = systemPasteboard.getPasteData() assert.equal(pasteData.getRecordCount(), 0) console.log('Checks there is no content in the pasteboard') assert.equal(systemPasteboard.hasPasteData(), false) var textDataNew = 'Hello World!-New' console.log('createUriData = ' + textDataNew) var pasteData = pasteboard.createUriData(textDataNew) console.log('Writes PasteData to the pasteboard') systemPasteboard.setPasteData(pasteData) console.log('Checks there is content in the pasteboard') assert.equal(systemPasteboard.hasPasteData(), true) console.log('Checks the number of records') pasteData = systemPasteboard.getPasteData() assert.equal(pasteData.getRecordCount(), 1) console.log('Checks the pasteboard content') assert.equal(pasteData.getRecordAt(0).plainText, textDataNew) ``` ## 相关仓 **Misc软件服务子系统** [miscservices\_paste](https://gitee.com/openharmony/miscservices_pasteboard)