# Pasteboard ## 概述 系统剪贴板支持复制和粘贴多种类型的数据。 可以使用此模块接口操作纯文本、HTML、URI、像素图片等其他类型的数据。 **起始版本:** 13 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [oh_pasteboard.h](oh__pasteboard_8h.md) | 提供访问系统剪贴板的接口、数据结构、枚举类型。 | | [oh_pasteboard_err_code.h](oh__pasteboard__err__code_8h.md) | 声明剪贴板框架错误码信息。 | ### 类型定义 | 名称 | 描述 | | -------- | -------- | | typedef enum [Pasteboard_NotifyType](#pasteboard_notifytype) [Pasteboard_NotifyType](#pasteboard_notifytype) | 剪贴板的数据变更类型。 | | typedef void(\* [Pasteboard_Notify](#pasteboard_notify)) (void \*context, [Pasteboard_NotifyType](#pasteboard_notifytype) type) | 定义剪贴板内容变更时触发的回调函数。 | | typedef void(\* [Pasteboard_Finalize](#pasteboard_finalize)) (void \*context) | 定义用于释放上下文的回调函数,剪贴板数据变更观察者对象销毁时触发。 | | typedef struct [OH_PasteboardObserver](#oh_pasteboardobserver) [OH_PasteboardObserver](#oh_pasteboardobserver) | 定义剪贴板数据变更观察者。 | | typedef struct [OH_Pasteboard](#oh_pasteboard) [OH_Pasteboard](#oh_pasteboard) | 定义剪贴板对象,用以操作系统剪贴板。 | | typedef enum [PASTEBOARD_ErrCode](#pasteboard_errcode) [PASTEBOARD_ErrCode](#pasteboard_errcode) | 错误码信息。 | | typedef enum [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) | 定义文件拷贝冲突时的选项。 | | typedef enum [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) | 定义进度条指示选项,可选择是否采用系统默认进度显示。 | | typedef struct [Pasteboard_ProgressInfo](#pasteboard_progressinfo) [Pasteboard_ProgressInfo](#pasteboard_progressinfo) | 定义进度上报的数据结构。且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时才会上报此信息。 | | typedef void (* [OH_Pasteboard_ProgressListener](#oh_pasteboard_progresslistener))([Pasteboard_ProgressInfo](#pasteboard_progressinfo)* progressInfo) | 定义获取进度数据的回调函数,当选择不使用系统默认进度显示时,可设置该项获取粘贴过程的进度。 | | typedef struct [Pasteboard_GetDataParams](#pasteboard_getdataparams) [Pasteboard_GetDataParams](#pasteboard_getdataparams) | 获取剪贴板数据支持进度提示时需要设置的参数,包含进度条指示选项、目标文件路径、文件冲突选项等。 | ### 枚举 | 名称 | 描述 | | -------- | -------- | | [Pasteboard_NotifyType](#pasteboard_notifytype) { NOTIFY_LOCAL_DATA_CHANGE = 1, NOTIFY_REMOTE_DATA_CHANGE = 2 } | 剪贴板的数据变更类型。 | | [PASTEBOARD_ErrCode](#pasteboard_errcode) {
ERR_OK = 0, ERR_PERMISSION_ERROR = 201, ERR_INVALID_PARAMETER = 401, ERR_DEVICE_NOT_SUPPORTED = 801,
ERR_INNER_ERROR = 12900000, ERR_BUSY = 12900003, ERR_PASTEBOARD_COPY_FILE_ERROR = 12900007, ERR_PASTEBOARD_PROGRESS_START_ERROR = 12900008, ERR_PASTEBOARD_PROGRESS_ABNORMAL = 12900009, ERR_PASTEBOARD_GET_DATA_FAILED = 12900010, ERR_BUSY_PROCESSING = 27787277, ERR_COPY_FORBIDDEN = 27787278
} | 错误码信息。 | | [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) { PASTEBOARD_OVERWRITE = 0, PASTEBOARD_SKIP = 1} | 拷贝文件文件冲突时的选项。 | | [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) { PASTEBOARD_NONE = 0, PASTEBOARD_DEFAULT = 1 } | 从剪贴板获取数据时的进度条类型。 | ### 函数 | 名称 | 描述 | | -------- | -------- | | [OH_PasteboardObserver](#oh_pasteboardobserver) \* [OH_PasteboardObserver_Create](#oh_pasteboardobserver_create) () | 创建一个剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针及实例对象。 | | int [OH_PasteboardObserver_Destroy](#oh_pasteboardobserver_destroy) ([OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 销毁剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针指向的实例对象。 | | int [OH_PasteboardObserver_SetData](#oh_pasteboardobserver_setdata) ([OH_PasteboardObserver](#oh_pasteboardobserver) \*observer, void \*context, const [Pasteboard_Notify](#pasteboard_notify) callback, const [Pasteboard_Finalize](#pasteboard_finalize) finalize) | 向剪贴板数据变更观察者设置回调函数。 | | [OH_Pasteboard](#oh_pasteboard) \* [OH_Pasteboard_Create](#oh_pasteboard_create) () | 创建剪贴板[OH_Pasteboard](#oh_pasteboard)指针及实例对象。 | | void [OH_Pasteboard_Destroy](#oh_pasteboard_destroy) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 销毁剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象。 | | int [OH_Pasteboard_Subscribe](#oh_pasteboard_subscribe) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int type, const [OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 订阅剪贴板的数据变更事件。 | | int [OH_Pasteboard_Unsubscribe](#oh_pasteboard_unsubscribe) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int type, const [OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 取消对剪贴板数据变更事件的订阅。 | | bool [OH_Pasteboard_IsRemoteData](#oh_pasteboard_isremotedata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 判断剪贴板中的数据是否来自远端设备。 | | int [OH_Pasteboard_GetDataSource](#oh_pasteboard_getdatasource) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, char \*source, unsigned int len) | 获取剪贴板中数据的数据源。 | | bool [OH_Pasteboard_HasType](#oh_pasteboard_hastype) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, const char \*type) | 判断剪贴板中是否有指定类型的数据。 | | bool [OH_Pasteboard_HasData](#oh_pasteboard_hasdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 判断剪贴板中是否有数据。 | | OH_UdmfData \* [OH_Pasteboard_GetData](#oh_pasteboard_getdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int \*status) | 获取剪贴板中的数据。 | | int [OH_Pasteboard_SetData](#oh_pasteboard_setdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, OH_UdmfData \*data) | 将统一数据对象数据写入剪贴板。 | | int [OH_Pasteboard_ClearData](#oh_pasteboard_cleardata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 清空剪贴板中的数据。 | | char ** [OH_Pasteboard_GetMimeTypes](#oh_pasteboard_getmimetypes) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, unsigned int *count) | 获取剪切板中的MIME类型。 | | [Pasteboard_GetDataParams](#pasteboard_getdataparams) *[OH_Pasteboard_GetDataParams_Create](#oh_pasteboard_getdataparams_create)(void) | 创建剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)指针及实例对象。 | | void [OH_Pasteboard_GetDataParams_Destroy](#oh_pasteboard_getdataparams_destroy)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params) | 销毁剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)实例对象。 | | void [OH_Pasteboard_GetDataParams_SetProgressIndicator](#oh_pasteboard_getdataparams_setprogressindicator)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) progressIndicator) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度条指示选项,可选择是否采用系统默认进度显示。 | | void [OH_Pasteboard_GetDataParams_SetDestUri](#oh_pasteboard_getdataparams_setdesturi)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, const char* destUri, uint32_t destUriLen) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置目标路径。 | | void [OH_Pasteboard_GetDataParams_SetFileConflictOptions](#oh_pasteboard_getdataparams_setfileconflictoptions)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) option) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置文件拷贝冲突选项。 | | void [OH_Pasteboard_GetDataParams_SetProgressListener](#oh_pasteboard_getdataparams_setprogresslistener)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, const [OH_Pasteboard_ProgressListener](#oh_pasteboard_progresslistener) listener) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度上报回调函数。 | | int [OH_Pasteboard_ProgressInfo_GetProgress](#oh_pasteboard_progressinfo_getprogress)([Pasteboard_ProgressInfo](#pasteboard_progressinfo)* progressInfo) | 通过[Pasteboard_ProgressInfo](#pasteboard_progressinfo)获取粘贴进度。 | | void [OH_Pasteboard_ProgressCancel](#oh_pasteboard_progresscancel)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params) | 通过[Pasteboard_GetDataParams](#pasteboard_getdataparams)取消正在进行的拷贝粘贴任务。 | | OH_UdmfData* [OH_Pasteboard_GetDataWithProgress](#oh_pasteboard_getdatawithprogress)([OH_Pasteboard](#oh_pasteboard)* pasteboard, [Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, int* status) | 获取剪贴板的数据以及粘贴进度,不支持对文件夹的拷贝。 | | uint32_t [OH_Pasteboard_GetChangeCount](#oh_pasteboard_getchangecount) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 获取剪切板内容的变化次数。 | ## 类型定义说明 ### OH_Pasteboard ``` typedef struct OH_Pasteboard OH_Pasteboard ``` **描述:** 定义剪贴板对象,用以操作系统剪贴板。 **起始版本:** 13 ### OH_PasteboardObserver ``` typedef struct OH_PasteboardObserver OH_PasteboardObserver ``` **描述:** 定义剪贴板数据变更观察者。 **起始版本:** 13 ### PASTEBOARD_ErrCode ``` typedef enum PASTEBOARD_ErrCode PASTEBOARD_ErrCode ``` **描述:** 错误码信息。 **起始版本:** 13 ### Pasteboard_Finalize ``` typedef void(* Pasteboard_Finalize) (void *context) ``` **描述:** 定义用于释放上下文的回调函数,剪贴板数据变更观察者对象销毁时触发。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | context | 要释放的上下文指针。 | ### Pasteboard_Notify ``` typedef void(* Pasteboard_Notify) (void *context, Pasteboard_NotifyType type) ``` **描述:** 定义剪贴板内容变更时触发的回调函数。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | context | 上下文信息,由函数[OH_PasteboardObserver_SetData](#oh_pasteboardobserver_setdata)传入。 | | type | 数据变更的类型。详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。 | ### Pasteboard_NotifyType ``` typedef enum Pasteboard_NotifyType Pasteboard_NotifyType ``` **描述:** 剪贴板的数据变更类型。 **起始版本:** 13 ### Pasteboard_FileConflictOptions ``` typedef enum Pasteboard_FileConflictOptions Pasteboard_FileConflictOptions ``` **描述:** 定义文件拷贝冲突时的选项,默认为PASTEBOARD_OVERWRITE。 **起始版本:** 15 ### Pasteboard_ProgressIndicator ``` typedef enum Pasteboard_ProgressIndicator Pasteboard_ProgressIndicator ``` **描述:** 定义进度条指示选项,可选择是否采用系统默认进度显示。 **起始版本:** 15 ### Pasteboard_ProgressInfo ``` typedef struct Pasteboard_ProgressInfo Pasteboard_ProgressInfo ``` **描述:** 定义进度上报的数据结构,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为NONE时才会上报此信息。 **起始版本:** 15 ### OH_Pasteboard_ProgressListener ``` typedef void (*OH_Pasteboard_ProgressListener)(Pasteboard_ProgressInfo* progressInfo); ``` **描述:** 用于在不使用系统默认进度显示时,通知应用拷贝粘贴任务进度。 **起始版本:** 15 **参数:** | 名称 | 类型 | 描述 | | ------------ | --------------------------------------------------- | ------------------------------------------------------------ | | progressInfo | [Pasteboard_ProgressInfo](#pasteboard_progressinfo) | 定义进度上报的数据结构,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为NONE时才会上报此信息。 | ### Pasteboard_GetDataParams ``` typedef struct Pasteboard_GetDataParams Pasteboard_GetDataParams; ``` **描述:** 获取剪贴板数据支持进度提示时需要设置的参数,包含进度条指示选项、目标文件路径、文件冲突选项等。 **起始版本:** 15 ## 枚举类型说明 ### PASTEBOARD_ErrCode ``` enum PASTEBOARD_ErrCode ``` **描述:** 错误码信息。 **起始版本:** 13 | 枚举值 | 描述 | | -------- | -------- | | ERR_OK | 执行成功。 | | ERR_PERMISSION_ERROR | 权限校验失败。 | | ERR_INVALID_PARAMETER | 非法参数。 | | ERR_DEVICE_NOT_SUPPORTED | 设备能力不支持。 | | ERR_INNER_ERROR | 内部错误。 | | ERR_BUSY | 系统忙。 | | ERR_PASTEBOARD_COPY_FILE_ERROR | 文件拷贝失败。 | | ERR_PASTEBOARD_PROGRESS_START_ERROR | 当应用使用系统提供的进度条时,创建进度条失败。 | | ERR_PASTEBOARD_PROGRESS_ABNORMAL | 当应用不使用剪贴板提供的进度条时,进度上报异常。 | | ERR_PASTEBOARD_GET_DATA_FAILED | 获取粘贴数据失败。 | ### Pasteboard_NotifyType ``` enum Pasteboard_NotifyType ``` **描述:** 剪贴板的数据变更类型。 **起始版本:** 13 | 枚举值 | 描述 | | -------- | -------- | | NOTIFY_LOCAL_DATA_CHANGE | 本地设备剪贴板数据变更。 || | NOTIFY_REMOTE_DATA_CHANGE | 组网内的非本地设备剪贴板数据变更。 || ### Pasteboard_FileConflictOptions ``` enum Pasteboard_FileConflictOptions ``` **描述:** 定义拷贝文件文件冲突时的选项。 **起始版本:** 15 | 枚举值 | 描述 | | -------------------- | ------------------------------------------------------------ | | PASTEBOARD_OVERWRITE | 目标路径存在同文件名时覆盖。 | | PASTEBOARD_SKIP | 目标路径存在同文件名时跳过,若设置SKIP,应用获取到的粘贴数据不包含跳过文件。 | ### Pasteboard_ProgressIndicator ``` enum Pasteboard_ProgressIndicator ``` **描述:** 定义进度条指示选项,可选择是否采用系统默认进度显示。 **起始版本:** 15 | 枚举值 | 描述 | | ------------------ | ------------------------ | | PASTEBOARD_NONE | 不采用系统默认进度显示。 | | PASTEBOARD_DEFAULT | 采用系统默认进度显示。 | ## 函数说明 ### OH_Pasteboard_ClearData() ``` int OH_Pasteboard_ClearData (OH_Pasteboard * pasteboard) ``` **描述:** 清空剪贴板中的数据。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_Pasteboard](#oh_pasteboard) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_Pasteboard_Create() ``` OH_Pasteboard* OH_Pasteboard_Create () ``` **描述:** 创建剪贴板[OH_Pasteboard](#oh_pasteboard)指针及实例对象。 **起始版本:** 13 **返回:** 执行成功则返回一个指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象的指针,否则返回nulllptr。 **参见:** [OH_Pasteboard](#oh_pasteboard) ### OH_Pasteboard_Destroy() ``` void OH_Pasteboard_Destroy (OH_Pasteboard * pasteboard) ``` **描述:** 销毁剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | **参见:** [OH_Pasteboard](#oh_pasteboard) ### OH_Pasteboard_GetData() ``` OH_UdmfData* OH_Pasteboard_GetData (OH_Pasteboard * pasteboard, int * status ) ``` **描述:** 获取剪贴板中的数据。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | status | 该参数是输出参数,表示执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 | **返回:** 执行成功时返回统一数据对象[OH_UdmfData](../apis-arkdata/_u_d_m_f.md)实例的指针。否则返回空指针。 **参见:** [OH_Pasteboard](#oh_pasteboard) [OH_UdmfData](../apis-arkdata/_u_d_m_f.md) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_Pasteboard_GetDataSource() ``` int OH_Pasteboard_GetDataSource (OH_Pasteboard * pasteboard, char * source, unsigned int len ) ``` **描述:** 获取剪贴板中数据的数据源。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | source | 该参数是输出参数,表示剪贴板中数据的数据源字符串。 | | len | 该参数是输出参数,表示数据源字符串的长度。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_Pasteboard](#oh_pasteboard) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_Pasteboard_HasData() ``` bool OH_Pasteboard_HasData (OH_Pasteboard * pasteboard) ``` **描述:** 判断剪贴板中是否有数据。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | **返回:** 返回剪贴板中是否有数据。返回true表示剪贴板中有数据,返回false表示剪贴板中没有数据。 **参见:** [OH_Pasteboard](#oh_pasteboard) ### OH_Pasteboard_HasType() ``` bool OH_Pasteboard_HasType (OH_Pasteboard * pasteboard, const char * type ) ``` **描述:** 判断剪贴板中是否有指定类型的数据。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | type | 表示要检查的数据类型。包含剪贴板基础数据类型与自定义数据类型,其中剪贴板基础数据类型有:`"text/plain"`、`"text/html"`、`"text/uri"`、`"text/want"`和`"pixelMap"`。 | **返回:** 返回剪贴板中是否有指定类型的数据。返回true表示剪贴板中包含指定类型的数据,返回false表示剪贴板中没有指定类型的数据。 **示例:** ```C OH_Pasteboard* pasteboard = OH_Pasteboard_Create(); bool hasType = OH_Pasteboard_HasType(pasteboard, "text/plain"); OH_Pasteboard_Destory(pasteboard); ``` **参见:** [OH_Pasteboard](#oh_pasteboard) ### OH_Pasteboard_IsRemoteData() ``` bool OH_Pasteboard_IsRemoteData (OH_Pasteboard * pasteboard) ``` **描述:** 判断剪贴板中的数据是否来自远端设备。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | **返回:** 返回剪贴板中的数据是否来自远端设备。返回true表示剪贴板中的数据来自远端设备,返回false表示剪贴板中数据来自本端设备。 **参见:** [OH_Pasteboard](#oh_pasteboard) ### OH_Pasteboard_SetData() ``` int OH_Pasteboard_SetData (OH_Pasteboard * pasteboard, OH_UdmfData * data ) ``` **描述:** 将统一数据对象数据写入剪贴板。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | data | 表示指向统一数据对象[OH_UdmfData](../apis-arkdata/_u_d_m_f.md)实例的指针。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_Pasteboard](#oh_pasteboard) [OH_UdmfData](../apis-arkdata/_u_d_m_f.md) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_Pasteboard_Subscribe() ``` int OH_Pasteboard_Subscribe (OH_Pasteboard * pasteboard, int type, const OH_PasteboardObserver * observer ) ``` **描述:** 订阅剪贴板的数据变更事件。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | type | 表示订阅的剪贴板数据变更类型,详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。 | | observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 它指定了剪贴板数据变更时触发的回调函数,详见:[OH_PasteboardObserver](#oh_pasteboardobserver)。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_Pasteboard](#oh_pasteboard) [OH_PasteboardObserver](#oh_pasteboardobserver) [Pasteboard_NotifyType](#pasteboard_notifytype) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_Pasteboard_Unsubscribe() ``` int OH_Pasteboard_Unsubscribe (OH_Pasteboard * pasteboard, int type, const OH_PasteboardObserver * observer ) ``` **描述:** 取消对剪贴板数据变更事件的订阅。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | type | 表示订阅的剪贴板数据变更类型,详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。 | | observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 它指定了剪贴板数据变更时触发的回调函数,详见:[OH_PasteboardObserver](#oh_pasteboardobserver)。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_Pasteboard](#oh_pasteboard) [OH_PasteboardObserver](#oh_pasteboardobserver) [Pasteboard_NotifyType](#pasteboard_notifytype) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_PasteboardObserver_Create() ``` OH_PasteboardObserver* OH_PasteboardObserver_Create () ``` **描述:** 创建一个剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针及实例对象。 **起始版本:** 13 **返回:** 执行成功时返回一个指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例对象的指针,否则返回空指针。 当不再需要使用指针时,请使用[OH_PasteboardObserver_Destroy](#oh_pasteboardobserver_destroy)销毁实例对象,否则会导致内存泄漏。 **参见:** [OH_PasteboardObserver](#oh_pasteboardobserver) ### OH_PasteboardObserver_Destroy() ``` int OH_PasteboardObserver_Destroy (OH_PasteboardObserver * observer) ``` **描述:** 销毁剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针指向的实例对象。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_PasteboardObserver](#oh_pasteboardobserver) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_PasteboardObserver_SetData() ``` int OH_PasteboardObserver_SetData (OH_PasteboardObserver * observer, void * context, const Pasteboard_Notify callback, const Pasteboard_Finalize finalize ) ``` **描述:** 向剪贴板数据变更观察者设置回调函数。 **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 | | context | 表示指向上下文数据的指针,将作为第一个参数传入[Pasteboard_Notify](#pasteboard_notify)。 | | callback | 表示数据变更回调函数。详见:[Pasteboard_Notify](#pasteboard_notify)。 | | finalize | 表示可选的回调函数,可以用于剪贴板数据变更观察者销毁时释放上下文数据。详见:[Pasteboard_Finalize](#pasteboard_finalize)。 | **返回:** 返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 **参见:** [OH_PasteboardObserver](#oh_pasteboardobserver) [Pasteboard_Notify](#pasteboard_notify) [PASTEBOARD_ErrCode](#pasteboard_errcode) ### OH_Pasteboard_GetMimeTypes() ``` char ** OH_Pasteboard_GetMimeTypes (OH_Pasteboard * pasteboard, unsigned int * count) ``` **描述:** 获取剪切板中的MIME类型。 **起始版本:** 14 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | count | 该参数是输出参数,结果集中的类型数量会写入该变量。 | **返回:** 执行成功时返回剪切板所有内容的MIME类型,否则返回nullptr。 本接口返回对象的生命周期由入参对象pasteboard管理,应用调用[OH_Pasteboard_Destroy](#oh_pasteboard_destroy)销毁入参对象pasteboard时同步释放本接口返回的结果,不允许应用主动释放。 入参对象pasteboard只保存本接口最新返回的结果,接口历史调用获得的结果将失效。 **参见:** [OH_Pasteboard](#oh_pasteboard) ### OH_Pasteboard_GetDataParams_Create() ```c Pasteboard_GetDataParams *OH_Pasteboard_GetDataParams_Create(void); ``` **描述:** 创建剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)指针及实例对象。 **起始版本:** 15 **返回:** 执行成功时返回一个指向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)实例对象的指针,否则返回空指针。 当不再需要使用指针时,请使用[OH_Pasteboard_GetDataParams_Destroy](#oh_pasteboard_getdataparams_destroy)销毁实例对象,否则会导致内存泄漏。 **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) ### OH_Pasteboard_GetDataParams_Destroy() ```c void OH_Pasteboard_GetDataParams_Destroy(Pasteboard_GetDataParams* params) ``` **描述:** 销毁剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)指针指向的实例对象。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ------ | ------------------------------------------------------------ | | params | 表示指向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)实例的指针。 | **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) ### OH_Pasteboard_GetDataParams_SetProgressIndicator() ```c void OH_Pasteboard_GetDataParams_SetProgressIndicator(Pasteboard_GetDataParams* params, Pasteboard_ProgressIndicator progressIndicator) ``` **描述:** 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度条指示选项,可选择是否采用系统默认进度显示。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ----------------- | ---------------------------------------------------- | | params | 表示指向上下文数据的指针。 | | progressIndicator | 表示进度条指示选项,可选择是否采用系统默认进度显示。 | **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) ### OH_Pasteboard_GetDataParams_SetDestUri() ```c void OH_Pasteboard_GetDataParams_SetDestUri(Pasteboard_GetDataParams* params, const char* destUri, uint32_t destUriLen) ``` **描述:** 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置拷贝文件时目标路径。若不支持文件处理,则不需要设置此参数;若应用涉及复杂文件处理策略或需要区分文件多路径存储,建议不设置此参数,由应用自行完成文件copy处理。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ---------- | -------------------------- | | params | 表示指向上下文数据的指针。 | | destUri | 表示拷贝文件时的目标路径。 | | destUriLen | 表示目标路径长度。 | **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) ### OH_Pasteboard_GetDataParams_SetFileConflictOptions() ```c void OH_Pasteboard_GetDataParams_SetFileConflictOptions(Pasteboard_GetDataParams* params, Pasteboard_FileConflictOptions option) ``` **描述:** 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置文件拷贝冲突选项,默认为PASTEBOARD_OVERWRITE。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ------ | ------------------------------------------------------ | | params | 表示指向上下文数据的指针。 | | option | 表示文件拷贝冲突时的选项,默认为PASTEBOARD_OVERWRITE。 | **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) ### OH_Pasteboard_GetDataParams_SetProgressListener() ```c void OH_Pasteboard_GetDataParams_SetProgressListener(Pasteboard_GetDataParams* params, const OH_Pasteboard_ProgressListener listener) ``` **描述:** 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度上报回调函数。 **起始版本:** 15 **参数:** | 名称 | 描述 | | -------- | ------------------------------------------------------------ | | params | 表示指向上下文数据的指针。 | | listener | 表示进度数据变化的订阅函数,当选择不使用系统默认进度显示时,可设置该项获取粘贴过程的进度。 | **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) [OH_Pasteboard_ProgressListener](#oh_pasteboard_progresslistener) ### OH_Pasteboard_ProgressInfo_GetProgress() ```c int OH_Pasteboard_ProgressInfo_GetProgress(Pasteboard_ProgressInfo* progressInfo) ``` **描述:** 通过[Pasteboard_ProgressInfo](#pasteboard_progressinfo)获取粘贴进度,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时,才可以获取到此信息。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ------------ | ------------------------------------------------------------ | | progressInfo | 定义进度上报的数据结构,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时才会上报此信息。 | **返回:** 系统拷贝粘贴任务进度百分比。 **参见:** [Pasteboard_ProgressInfo](#pasteboard_progressinfo) ### OH_Pasteboard_ProgressCancel() ```c void OH_Pasteboard_ProgressCancel(Pasteboard_GetDataParams* params); ``` **描述:** 通过[Pasteboard_GetDataParams](#pasteboard_getdataparams)取消正在进行的拷贝粘贴任务,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时此参数才有意义。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ------ | -------------------------- | | params | 表示指向上下文数据的指针。 | **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) ### OH_Pasteboard_GetDataWithProgress() ```c OH_UdmfData* OH_Pasteboard_GetDataWithProgress(OH_Pasteboard* pasteboard, Pasteboard_GetDataParams* params, int* status); ``` **描述:** 获取剪贴板的内容和进度,不支持对文件夹的拷贝。 **起始版本:** 15 **参数:** | 名称 | 描述 | | ---------- | ------------------------------------------------------------ | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | | params | 应用在使用剪贴板提供的文件拷贝能力的情况下需要的参数。定义详见[Pasteboard_GetDataParams](#pasteboard_getdataparams)。 | | status | 该参数是输出参数,表示执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 | **返回:** 执行成功时返回统一数据对象[OH_UdmfData](../apis-arkdata/_u_d_m_f.md)实例的指针。否则返回空指针。 **参见:** [Pasteboard_GetDataParams](#pasteboard_getdataparams) ### OH_Pasteboard_GetChangeCount() ``` uint32_t OH_Pasteboard_GetChangeCount(OH_Pasteboard *pasteboard); ``` **描述:** 获取剪切板内容的变化次数。 当剪切板内容过期或调用[OH_Pasteboard_ClearData](#oh_pasteboard_cleardata)等接口导致剪切板内容为空时,内容变化次数不会因此改变。 系统重启或剪贴板服务异常重启时,剪贴板内容变化次数重新从0开始计数。对同一内容连续多次复制会被视作多次更改,每次复制均会导致内容变化次数增加。 **起始版本:** 18 **参数:** | 名称 | 描述 | | -------- | -------- | | pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | **返回:** 执行成功时返回剪切板内容的变化次数,否则返回0。 **参见:** [OH_Pasteboard](#oh_pasteboard)