1# Pasteboard 2 3 4## 概述 5 6系统剪贴板支持复制和粘贴多种类型的数据。 可以使用此模块接口操作纯文本、HTML、URI、像素图片等其他类型的数据。 7 8**起始版本:** 13 9 10 11## 汇总 12 13 14### 文件 15 16| 名称 | 描述 | 17| -------- | -------- | 18| [oh_pasteboard.h](oh__pasteboard_8h.md) | 提供访问系统剪贴板的接口、数据结构、枚举类型。 | 19| [oh_pasteboard_err_code.h](oh__pasteboard__err__code_8h.md) | 声明剪贴板框架错误码信息。 | 20 21 22### 类型定义 23 24| 名称 | 描述 | 25| -------- | -------- | 26| typedef enum [Pasteboard_NotifyType](#pasteboard_notifytype) [Pasteboard_NotifyType](#pasteboard_notifytype) | 剪贴板的数据变更类型。 | 27| typedef void(\* [Pasteboard_Notify](#pasteboard_notify)) (void \*context, [Pasteboard_NotifyType](#pasteboard_notifytype) type) | 定义剪贴板内容变更时触发的回调函数。 | 28| typedef void(\* [Pasteboard_Finalize](#pasteboard_finalize)) (void \*context) | 定义用于释放上下文的回调函数,剪贴板数据变更观察者对象销毁时触发。 | 29| typedef struct [OH_PasteboardObserver](#oh_pasteboardobserver) [OH_PasteboardObserver](#oh_pasteboardobserver) | 定义剪贴板数据变更观察者。 | 30| typedef struct [OH_Pasteboard](#oh_pasteboard) [OH_Pasteboard](#oh_pasteboard) | 定义剪贴板对象,用以操作系统剪贴板。 | 31| typedef enum [PASTEBOARD_ErrCode](#pasteboard_errcode) [PASTEBOARD_ErrCode](#pasteboard_errcode) | 错误码信息。 | 32| typedef enum [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) | 定义文件拷贝冲突时的选项。 | 33| typedef enum [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) | 定义进度条指示选项,可选择是否采用系统默认进度显示。 | 34| typedef struct [Pasteboard_ProgressInfo](#pasteboard_progressinfo) [Pasteboard_ProgressInfo](#pasteboard_progressinfo) | 定义进度上报的数据结构。且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时才会上报此信息。 | 35| typedef void (* [OH_Pasteboard_ProgressListener](#oh_pasteboard_progresslistener))([Pasteboard_ProgressInfo](#pasteboard_progressinfo)* progressInfo) | 定义获取进度数据的回调函数,当选择不使用系统默认进度显示时,可设置该项获取粘贴过程的进度。 | 36| typedef struct [Pasteboard_GetDataParams](#pasteboard_getdataparams) [Pasteboard_GetDataParams](#pasteboard_getdataparams) | 获取剪贴板数据支持进度提示时需要设置的参数,包含进度条指示选项、目标文件路径、文件冲突选项等。 | 37 38 39### 枚举 40 41| 名称 | 描述 | 42| -------- | -------- | 43| [Pasteboard_NotifyType](#pasteboard_notifytype) { NOTIFY_LOCAL_DATA_CHANGE = 1, NOTIFY_REMOTE_DATA_CHANGE = 2 } | 剪贴板的数据变更类型。 | 44| [PASTEBOARD_ErrCode](#pasteboard_errcode) {<br/>ERR_OK = 0, ERR_PERMISSION_ERROR = 201, ERR_INVALID_PARAMETER = 401, ERR_DEVICE_NOT_SUPPORTED = 801,<br/>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<br/>} | 错误码信息。 | 45| [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) { PASTEBOARD_OVERWRITE = 0, PASTEBOARD_SKIP = 1} | 拷贝文件文件冲突时的选项。 | 46| [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) { PASTEBOARD_NONE = 0, PASTEBOARD_DEFAULT = 1 } | 从剪贴板获取数据时的进度条类型。 | 47 48 49### 函数 50 51| 名称 | 描述 | 52| -------- | -------- | 53| [OH_PasteboardObserver](#oh_pasteboardobserver) \* [OH_PasteboardObserver_Create](#oh_pasteboardobserver_create) () | 创建一个剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针及实例对象。 | 54| int [OH_PasteboardObserver_Destroy](#oh_pasteboardobserver_destroy) ([OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 销毁剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针指向的实例对象。 | 55| 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) | 向剪贴板数据变更观察者设置回调函数。 | 56| [OH_Pasteboard](#oh_pasteboard) \* [OH_Pasteboard_Create](#oh_pasteboard_create) () | 创建剪贴板[OH_Pasteboard](#oh_pasteboard)指针及实例对象。 | 57| void [OH_Pasteboard_Destroy](#oh_pasteboard_destroy) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 销毁剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象。 | 58| int [OH_Pasteboard_Subscribe](#oh_pasteboard_subscribe) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int type, const [OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 订阅剪贴板的数据变更事件。 | 59| int [OH_Pasteboard_Unsubscribe](#oh_pasteboard_unsubscribe) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int type, const [OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 取消对剪贴板数据变更事件的订阅。 | 60| bool [OH_Pasteboard_IsRemoteData](#oh_pasteboard_isremotedata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 判断剪贴板中的数据是否来自远端设备。 | 61| int [OH_Pasteboard_GetDataSource](#oh_pasteboard_getdatasource) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, char \*source, unsigned int len) | 获取剪贴板中数据的数据源。 | 62| bool [OH_Pasteboard_HasType](#oh_pasteboard_hastype) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, const char \*type) | 判断剪贴板中是否有指定类型的数据。 | 63| bool [OH_Pasteboard_HasData](#oh_pasteboard_hasdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 判断剪贴板中是否有数据。 | 64| OH_UdmfData \* [OH_Pasteboard_GetData](#oh_pasteboard_getdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int \*status) | 获取剪贴板中的数据。 | 65| int [OH_Pasteboard_SetData](#oh_pasteboard_setdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, OH_UdmfData \*data) | 将统一数据对象数据写入剪贴板。 | 66| int [OH_Pasteboard_ClearData](#oh_pasteboard_cleardata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 清空剪贴板中的数据。 | 67| char ** [OH_Pasteboard_GetMimeTypes](#oh_pasteboard_getmimetypes) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, unsigned int *count) | 获取剪切板中的MIME类型。 | 68| [Pasteboard_GetDataParams](#pasteboard_getdataparams) *[OH_Pasteboard_GetDataParams_Create](#oh_pasteboard_getdataparams_create)(void) | 创建剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)指针及实例对象。 | 69| void [OH_Pasteboard_GetDataParams_Destroy](#oh_pasteboard_getdataparams_destroy)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params) | 销毁剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)实例对象。 | 70| void [OH_Pasteboard_GetDataParams_SetProgressIndicator](#oh_pasteboard_getdataparams_setprogressindicator)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, [Pasteboard_ProgressIndicator](#pasteboard_progressindicator) progressIndicator) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度条指示选项,可选择是否采用系统默认进度显示。 | 71| void [OH_Pasteboard_GetDataParams_SetDestUri](#oh_pasteboard_getdataparams_setdesturi)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, const char* destUri, uint32_t destUriLen) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置目标路径。 | 72| void [OH_Pasteboard_GetDataParams_SetFileConflictOptions](#oh_pasteboard_getdataparams_setfileconflictoptions)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, [Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) option) | 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置文件拷贝冲突选项。 | 73| 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)设置进度上报回调函数。 | 74| int [OH_Pasteboard_ProgressInfo_GetProgress](#oh_pasteboard_progressinfo_getprogress)([Pasteboard_ProgressInfo](#pasteboard_progressinfo)* progressInfo) | 通过[Pasteboard_ProgressInfo](#pasteboard_progressinfo)获取粘贴进度。 | 75| void [OH_Pasteboard_ProgressCancel](#oh_pasteboard_progresscancel)([Pasteboard_GetDataParams](#pasteboard_getdataparams)* params) | 通过[Pasteboard_GetDataParams](#pasteboard_getdataparams)取消正在进行的拷贝粘贴任务。 | 76| OH_UdmfData* [OH_Pasteboard_GetDataWithProgress](#oh_pasteboard_getdatawithprogress)([OH_Pasteboard](#oh_pasteboard)* pasteboard, [Pasteboard_GetDataParams](#pasteboard_getdataparams)* params, int* status) | 获取剪贴板的数据以及粘贴进度,不支持对文件夹的拷贝。 | 77| uint32_t [OH_Pasteboard_GetChangeCount](#oh_pasteboard_getchangecount) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 获取剪切板内容的变化次数。 | 78 79 80## 类型定义说明 81 82 83### OH_Pasteboard 84 85``` 86typedef struct OH_Pasteboard OH_Pasteboard 87``` 88**描述:** 89 90定义剪贴板对象,用以操作系统剪贴板。 91 92**起始版本:** 13 93 94 95### OH_PasteboardObserver 96 97``` 98typedef struct OH_PasteboardObserver OH_PasteboardObserver 99``` 100**描述:** 101 102定义剪贴板数据变更观察者。 103 104**起始版本:** 13 105 106 107### PASTEBOARD_ErrCode 108 109``` 110typedef enum PASTEBOARD_ErrCode PASTEBOARD_ErrCode 111``` 112**描述:** 113 114错误码信息。 115 116**起始版本:** 13 117 118 119### Pasteboard_Finalize 120 121``` 122typedef void(* Pasteboard_Finalize) (void *context) 123``` 124**描述:** 125 126定义用于释放上下文的回调函数,剪贴板数据变更观察者对象销毁时触发。 127 128**起始版本:** 13 129 130**参数:** 131 132| 名称 | 描述 | 133| -------- | -------- | 134| context | 要释放的上下文指针。 | 135 136 137### Pasteboard_Notify 138 139``` 140typedef void(* Pasteboard_Notify) (void *context, Pasteboard_NotifyType type) 141``` 142**描述:** 143 144定义剪贴板内容变更时触发的回调函数。 145 146**起始版本:** 13 147 148**参数:** 149 150| 名称 | 描述 | 151| -------- | -------- | 152| context | 上下文信息,由函数[OH_PasteboardObserver_SetData](#oh_pasteboardobserver_setdata)传入。 | 153| type | 数据变更的类型。详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。 | 154 155 156### Pasteboard_NotifyType 157 158``` 159typedef enum Pasteboard_NotifyType Pasteboard_NotifyType 160``` 161**描述:** 162 163剪贴板的数据变更类型。 164 165**起始版本:** 13 166 167### Pasteboard_FileConflictOptions 168 169``` 170typedef enum Pasteboard_FileConflictOptions Pasteboard_FileConflictOptions 171``` 172 173**描述:** 174 175定义文件拷贝冲突时的选项,默认为PASTEBOARD_OVERWRITE。 176 177**起始版本:** 15 178 179### Pasteboard_ProgressIndicator 180 181``` 182typedef enum Pasteboard_ProgressIndicator Pasteboard_ProgressIndicator 183``` 184 185**描述:** 186 187定义进度条指示选项,可选择是否采用系统默认进度显示。 188 189**起始版本:** 15 190 191### Pasteboard_ProgressInfo 192 193``` 194typedef struct Pasteboard_ProgressInfo Pasteboard_ProgressInfo 195``` 196 197**描述:** 198 199定义进度上报的数据结构,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为NONE时才会上报此信息。 200 201**起始版本:** 15 202 203### OH_Pasteboard_ProgressListener 204 205``` 206typedef void (*OH_Pasteboard_ProgressListener)(Pasteboard_ProgressInfo* progressInfo); 207``` 208 209**描述:** 210 211用于在不使用系统默认进度显示时,通知应用拷贝粘贴任务进度。 212 213**起始版本:** 15 214 215**参数:** 216 217| 名称 | 类型 | 描述 | 218| ------------ | --------------------------------------------------- | ------------------------------------------------------------ | 219| progressInfo | [Pasteboard_ProgressInfo](#pasteboard_progressinfo) | 定义进度上报的数据结构,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为NONE时才会上报此信息。 | 220 221### Pasteboard_GetDataParams 222 223``` 224typedef struct Pasteboard_GetDataParams Pasteboard_GetDataParams; 225``` 226 227**描述:** 228 229获取剪贴板数据支持进度提示时需要设置的参数,包含进度条指示选项、目标文件路径、文件冲突选项等。 230 231**起始版本:** 15 232 233 234## 枚举类型说明 235 236 237### PASTEBOARD_ErrCode 238 239``` 240enum PASTEBOARD_ErrCode 241``` 242**描述:** 243 244错误码信息。 245 246**起始版本:** 13 247 248| 枚举值 | 描述 | 249| -------- | -------- | 250| ERR_OK | 执行成功。 | 251| ERR_PERMISSION_ERROR | 权限校验失败。 | 252| ERR_INVALID_PARAMETER | 非法参数。 | 253| ERR_DEVICE_NOT_SUPPORTED | 设备能力不支持。 | 254| ERR_INNER_ERROR | 内部错误。 | 255| ERR_BUSY | 系统忙。 | 256| ERR_PASTEBOARD_COPY_FILE_ERROR | 文件拷贝失败。 | 257| ERR_PASTEBOARD_PROGRESS_START_ERROR | 当应用使用系统提供的进度条时,创建进度条失败。 | 258| ERR_PASTEBOARD_PROGRESS_ABNORMAL | 当应用不使用剪贴板提供的进度条时,进度上报异常。 | 259| ERR_PASTEBOARD_GET_DATA_FAILED | 获取粘贴数据失败。 | 260 261 262### Pasteboard_NotifyType 263 264``` 265enum Pasteboard_NotifyType 266``` 267**描述:** 268 269剪贴板的数据变更类型。 270 271**起始版本:** 13 272 273| 枚举值 | 描述 | 274| -------- | -------- | 275| NOTIFY_LOCAL_DATA_CHANGE | 本地设备剪贴板数据变更。 || 276| NOTIFY_REMOTE_DATA_CHANGE | 组网内的非本地设备剪贴板数据变更。 || 277 278### Pasteboard_FileConflictOptions 279 280``` 281enum Pasteboard_FileConflictOptions 282``` 283 284**描述:** 285 286定义拷贝文件文件冲突时的选项。 287 288**起始版本:** 15 289 290| 枚举值 | 描述 | 291| -------------------- | ------------------------------------------------------------ | 292| PASTEBOARD_OVERWRITE | 目标路径存在同文件名时覆盖。 | 293| PASTEBOARD_SKIP | 目标路径存在同文件名时跳过,若设置SKIP,应用获取到的粘贴数据不包含跳过文件。 | 294 295### Pasteboard_ProgressIndicator 296 297``` 298enum Pasteboard_ProgressIndicator 299``` 300 301**描述:** 302 303定义进度条指示选项,可选择是否采用系统默认进度显示。 304 305**起始版本:** 15 306 307| 枚举值 | 描述 | 308| ------------------ | ------------------------ | 309| PASTEBOARD_NONE | 不采用系统默认进度显示。 | 310| PASTEBOARD_DEFAULT | 采用系统默认进度显示。 | 311 312## 函数说明 313 314 315### OH_Pasteboard_ClearData() 316 317``` 318int OH_Pasteboard_ClearData (OH_Pasteboard * pasteboard) 319``` 320**描述:** 321 322清空剪贴板中的数据。 323 324**起始版本:** 13 325 326**参数:** 327 328| 名称 | 描述 | 329| -------- | -------- | 330| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 331 332**返回:** 333 334返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 335 336**参见:** 337 338[OH_Pasteboard](#oh_pasteboard) 339 340[PASTEBOARD_ErrCode](#pasteboard_errcode) 341 342 343### OH_Pasteboard_Create() 344 345``` 346OH_Pasteboard* OH_Pasteboard_Create () 347``` 348**描述:** 349 350创建剪贴板[OH_Pasteboard](#oh_pasteboard)指针及实例对象。 351 352**起始版本:** 13 353 354**返回:** 355 356执行成功则返回一个指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象的指针,否则返回nulllptr。 357 358**参见:** 359 360[OH_Pasteboard](#oh_pasteboard) 361 362 363### OH_Pasteboard_Destroy() 364 365``` 366void OH_Pasteboard_Destroy (OH_Pasteboard * pasteboard) 367``` 368**描述:** 369 370销毁剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象。 371 372**起始版本:** 13 373 374**参数:** 375 376| 名称 | 描述 | 377| -------- | -------- | 378| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 379 380**参见:** 381 382[OH_Pasteboard](#oh_pasteboard) 383 384 385### OH_Pasteboard_GetData() 386 387``` 388OH_UdmfData* OH_Pasteboard_GetData (OH_Pasteboard * pasteboard, int * status ) 389``` 390**描述:** 391 392获取剪贴板中的数据。 393 394**起始版本:** 13 395 396**参数:** 397 398| 名称 | 描述 | 399| -------- | -------- | 400| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 401| status | 该参数是输出参数,表示执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 | 402 403**返回:** 404 405执行成功时返回统一数据对象[OH_UdmfData](../apis-arkdata/_u_d_m_f.md)实例的指针。否则返回空指针。 406 407**参见:** 408 409[OH_Pasteboard](#oh_pasteboard) 410 411[OH_UdmfData](../apis-arkdata/_u_d_m_f.md) 412 413[PASTEBOARD_ErrCode](#pasteboard_errcode) 414 415 416### OH_Pasteboard_GetDataSource() 417 418``` 419int OH_Pasteboard_GetDataSource (OH_Pasteboard * pasteboard, char * source, unsigned int len ) 420``` 421**描述:** 422 423获取剪贴板中数据的数据源。 424 425**起始版本:** 13 426 427**参数:** 428 429| 名称 | 描述 | 430| -------- | -------- | 431| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 432| source | 该参数是输出参数,表示剪贴板中数据的数据源字符串。 | 433| len | 该参数是输出参数,表示数据源字符串的长度。 | 434 435**返回:** 436 437返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 438 439**参见:** 440 441[OH_Pasteboard](#oh_pasteboard) 442 443[PASTEBOARD_ErrCode](#pasteboard_errcode) 444 445 446### OH_Pasteboard_HasData() 447 448``` 449bool OH_Pasteboard_HasData (OH_Pasteboard * pasteboard) 450``` 451**描述:** 452 453判断剪贴板中是否有数据。 454 455**起始版本:** 13 456 457**参数:** 458 459| 名称 | 描述 | 460| -------- | -------- | 461| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 462 463**返回:** 464 465返回剪贴板中是否有数据。返回true表示剪贴板中有数据,返回false表示剪贴板中没有数据。 466 467**参见:** 468 469[OH_Pasteboard](#oh_pasteboard) 470 471 472### OH_Pasteboard_HasType() 473 474``` 475bool OH_Pasteboard_HasType (OH_Pasteboard * pasteboard, const char * type ) 476``` 477**描述:** 478 479判断剪贴板中是否有指定类型的数据。 480 481**起始版本:** 13 482 483**参数:** 484 485| 名称 | 描述 | 486| -------- | -------- | 487| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 488| type | 表示要检查的数据类型。包含剪贴板基础数据类型与自定义数据类型,其中剪贴板基础数据类型有:`"text/plain"`、`"text/html"`、`"text/uri"`、`"text/want"`和`"pixelMap"`。 | 489 490**返回:** 491 492返回剪贴板中是否有指定类型的数据。返回true表示剪贴板中包含指定类型的数据,返回false表示剪贴板中没有指定类型的数据。 493 494**示例:** 495 496```C 497OH_Pasteboard* pasteboard = OH_Pasteboard_Create(); 498bool hasType = OH_Pasteboard_HasType(pasteboard, "text/plain"); 499OH_Pasteboard_Destory(pasteboard); 500``` 501 502**参见:** 503 504[OH_Pasteboard](#oh_pasteboard) 505 506 507### OH_Pasteboard_IsRemoteData() 508 509``` 510bool OH_Pasteboard_IsRemoteData (OH_Pasteboard * pasteboard) 511``` 512**描述:** 513 514判断剪贴板中的数据是否来自远端设备。 515 516**起始版本:** 13 517 518**参数:** 519 520| 名称 | 描述 | 521| -------- | -------- | 522| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 523 524**返回:** 525 526返回剪贴板中的数据是否来自远端设备。返回true表示剪贴板中的数据来自远端设备,返回false表示剪贴板中数据来自本端设备。 527 528**参见:** 529 530[OH_Pasteboard](#oh_pasteboard) 531 532 533### OH_Pasteboard_SetData() 534 535``` 536int OH_Pasteboard_SetData (OH_Pasteboard * pasteboard, OH_UdmfData * data ) 537``` 538**描述:** 539 540将统一数据对象数据写入剪贴板。 541 542**起始版本:** 13 543 544**参数:** 545 546| 名称 | 描述 | 547| -------- | -------- | 548| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 549| data | 表示指向统一数据对象[OH_UdmfData](../apis-arkdata/_u_d_m_f.md)实例的指针。 | 550 551**返回:** 552 553返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 554 555**参见:** 556 557[OH_Pasteboard](#oh_pasteboard) 558 559[OH_UdmfData](../apis-arkdata/_u_d_m_f.md) 560 561[PASTEBOARD_ErrCode](#pasteboard_errcode) 562 563 564### OH_Pasteboard_Subscribe() 565 566``` 567int OH_Pasteboard_Subscribe (OH_Pasteboard * pasteboard, int type, const OH_PasteboardObserver * observer ) 568``` 569**描述:** 570 571订阅剪贴板的数据变更事件。 572 573**起始版本:** 13 574 575**参数:** 576 577| 名称 | 描述 | 578| -------- | -------- | 579| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 580| type | 表示订阅的剪贴板数据变更类型,详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。 | 581| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 它指定了剪贴板数据变更时触发的回调函数,详见:[OH_PasteboardObserver](#oh_pasteboardobserver)。 | 582 583**返回:** 584 585返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 586 587**参见:** 588 589[OH_Pasteboard](#oh_pasteboard) 590 591[OH_PasteboardObserver](#oh_pasteboardobserver) 592 593[Pasteboard_NotifyType](#pasteboard_notifytype) 594 595[PASTEBOARD_ErrCode](#pasteboard_errcode) 596 597 598### OH_Pasteboard_Unsubscribe() 599 600``` 601int OH_Pasteboard_Unsubscribe (OH_Pasteboard * pasteboard, int type, const OH_PasteboardObserver * observer ) 602``` 603**描述:** 604 605取消对剪贴板数据变更事件的订阅。 606 607**起始版本:** 13 608 609**参数:** 610 611| 名称 | 描述 | 612| -------- | -------- | 613| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 614| type | 表示订阅的剪贴板数据变更类型,详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。 | 615| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 它指定了剪贴板数据变更时触发的回调函数,详见:[OH_PasteboardObserver](#oh_pasteboardobserver)。 | 616 617**返回:** 618 619返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 620 621**参见:** 622 623[OH_Pasteboard](#oh_pasteboard) 624 625[OH_PasteboardObserver](#oh_pasteboardobserver) 626 627[Pasteboard_NotifyType](#pasteboard_notifytype) 628 629[PASTEBOARD_ErrCode](#pasteboard_errcode) 630 631 632### OH_PasteboardObserver_Create() 633 634``` 635OH_PasteboardObserver* OH_PasteboardObserver_Create () 636``` 637**描述:** 638 639创建一个剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针及实例对象。 640 641**起始版本:** 13 642 643**返回:** 644 645执行成功时返回一个指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例对象的指针,否则返回空指针。 当不再需要使用指针时,请使用[OH_PasteboardObserver_Destroy](#oh_pasteboardobserver_destroy)销毁实例对象,否则会导致内存泄漏。 646 647**参见:** 648 649[OH_PasteboardObserver](#oh_pasteboardobserver) 650 651 652### OH_PasteboardObserver_Destroy() 653 654``` 655int OH_PasteboardObserver_Destroy (OH_PasteboardObserver * observer) 656``` 657**描述:** 658 659销毁剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针指向的实例对象。 660 661**起始版本:** 13 662 663**参数:** 664 665| 名称 | 描述 | 666| -------- | -------- | 667| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 | 668 669**返回:** 670 671返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 672 673**参见:** 674 675[OH_PasteboardObserver](#oh_pasteboardobserver) 676 677[PASTEBOARD_ErrCode](#pasteboard_errcode) 678 679 680### OH_PasteboardObserver_SetData() 681 682``` 683int OH_PasteboardObserver_SetData (OH_PasteboardObserver * observer, void * context, const Pasteboard_Notify callback, const Pasteboard_Finalize finalize ) 684``` 685**描述:** 686 687向剪贴板数据变更观察者设置回调函数。 688 689**起始版本:** 13 690 691**参数:** 692 693| 名称 | 描述 | 694| -------- | -------- | 695| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 | 696| context | 表示指向上下文数据的指针,将作为第一个参数传入[Pasteboard_Notify](#pasteboard_notify)。 | 697| callback | 表示数据变更回调函数。详见:[Pasteboard_Notify](#pasteboard_notify)。 | 698| finalize | 表示可选的回调函数,可以用于剪贴板数据变更观察者销毁时释放上下文数据。详见:[Pasteboard_Finalize](#pasteboard_finalize)。 | 699 700**返回:** 701 702返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。 703 704**参见:** 705 706[OH_PasteboardObserver](#oh_pasteboardobserver) 707 708[Pasteboard_Notify](#pasteboard_notify) 709 710[PASTEBOARD_ErrCode](#pasteboard_errcode) 711 712### OH_Pasteboard_GetMimeTypes() 713 714``` 715char ** OH_Pasteboard_GetMimeTypes (OH_Pasteboard * pasteboard, unsigned int * count) 716``` 717**描述:** 718 719获取剪切板中的MIME类型。 720 721**起始版本:** 14 722 723**参数:** 724 725| 名称 | 描述 | 726| -------- | -------- | 727| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 728| count | 该参数是输出参数,结果集中的类型数量会写入该变量。 | 729 730**返回:** 731 732执行成功时返回剪切板所有内容的MIME类型,否则返回nullptr。 733 734本接口返回对象的生命周期由入参对象pasteboard管理,应用调用[OH_Pasteboard_Destroy](#oh_pasteboard_destroy)销毁入参对象pasteboard时同步释放本接口返回的结果,不允许应用主动释放。 735 736入参对象pasteboard只保存本接口最新返回的结果,接口历史调用获得的结果将失效。 737 738**参见:** 739 740[OH_Pasteboard](#oh_pasteboard) 741 742### OH_Pasteboard_GetDataParams_Create() 743 744```c 745Pasteboard_GetDataParams *OH_Pasteboard_GetDataParams_Create(void); 746``` 747 748**描述:** 749 750创建剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)指针及实例对象。 751 752**起始版本:** 15 753 754**返回:** 755 756执行成功时返回一个指向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)实例对象的指针,否则返回空指针。 当不再需要使用指针时,请使用[OH_Pasteboard_GetDataParams_Destroy](#oh_pasteboard_getdataparams_destroy)销毁实例对象,否则会导致内存泄漏。 757 758**参见:** 759 760[Pasteboard_GetDataParams](#pasteboard_getdataparams) 761 762### OH_Pasteboard_GetDataParams_Destroy() 763 764```c 765void OH_Pasteboard_GetDataParams_Destroy(Pasteboard_GetDataParams* params) 766``` 767 768**描述:** 769 770销毁剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)指针指向的实例对象。 771 772**起始版本:** 15 773 774**参数:** 775 776| 名称 | 描述 | 777| ------ | ------------------------------------------------------------ | 778| params | 表示指向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)实例的指针。 | 779 780**参见:** 781 782[Pasteboard_GetDataParams](#pasteboard_getdataparams) 783 784### OH_Pasteboard_GetDataParams_SetProgressIndicator() 785 786```c 787void OH_Pasteboard_GetDataParams_SetProgressIndicator(Pasteboard_GetDataParams* params, 788 Pasteboard_ProgressIndicator progressIndicator) 789``` 790 791**描述:** 792 793向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度条指示选项,可选择是否采用系统默认进度显示。 794 795**起始版本:** 15 796 797**参数:** 798 799| 名称 | 描述 | 800| ----------------- | ---------------------------------------------------- | 801| params | 表示指向上下文数据的指针。 | 802| progressIndicator | 表示进度条指示选项,可选择是否采用系统默认进度显示。 | 803 804**参见:** 805 806[Pasteboard_GetDataParams](#pasteboard_getdataparams) 807 808[Pasteboard_ProgressIndicator](#pasteboard_progressindicator) 809 810### OH_Pasteboard_GetDataParams_SetDestUri() 811 812```c 813void OH_Pasteboard_GetDataParams_SetDestUri(Pasteboard_GetDataParams* params, const char* destUri, uint32_t destUriLen) 814``` 815 816**描述:** 817 818 向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置拷贝文件时目标路径。若不支持文件处理,则不需要设置此参数;若应用涉及复杂文件处理策略或需要区分文件多路径存储,建议不设置此参数,由应用自行完成文件copy处理。 819 820**起始版本:** 15 821 822**参数:** 823 824| 名称 | 描述 | 825| ---------- | -------------------------- | 826| params | 表示指向上下文数据的指针。 | 827| destUri | 表示拷贝文件时的目标路径。 | 828| destUriLen | 表示目标路径长度。 | 829 830**参见:** 831 832[Pasteboard_GetDataParams](#pasteboard_getdataparams) 833 834[Pasteboard_ProgressIndicator](#pasteboard_progressindicator) 835 836### OH_Pasteboard_GetDataParams_SetFileConflictOptions() 837 838```c 839void OH_Pasteboard_GetDataParams_SetFileConflictOptions(Pasteboard_GetDataParams* params, 840 Pasteboard_FileConflictOptions option) 841``` 842 843**描述:** 844 845向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置文件拷贝冲突选项,默认为PASTEBOARD_OVERWRITE。 846 847**起始版本:** 15 848 849**参数:** 850 851| 名称 | 描述 | 852| ------ | ------------------------------------------------------ | 853| params | 表示指向上下文数据的指针。 | 854| option | 表示文件拷贝冲突时的选项,默认为PASTEBOARD_OVERWRITE。 | 855 856**参见:** 857 858[Pasteboard_GetDataParams](#pasteboard_getdataparams) 859 860[Pasteboard_FileConflictOptions](#pasteboard_fileconflictoptions) 861 862### OH_Pasteboard_GetDataParams_SetProgressListener() 863 864```c 865void OH_Pasteboard_GetDataParams_SetProgressListener(Pasteboard_GetDataParams* params, 866 const OH_Pasteboard_ProgressListener listener) 867``` 868 869**描述:** 870 871向剪贴板[Pasteboard_GetDataParams](#pasteboard_getdataparams)设置进度上报回调函数。 872 873**起始版本:** 15 874 875**参数:** 876 877| 名称 | 描述 | 878| -------- | ------------------------------------------------------------ | 879| params | 表示指向上下文数据的指针。 | 880| listener | 表示进度数据变化的订阅函数,当选择不使用系统默认进度显示时,可设置该项获取粘贴过程的进度。 | 881 882**参见:** 883 884[Pasteboard_GetDataParams](#pasteboard_getdataparams) 885 886[OH_Pasteboard_ProgressListener](#oh_pasteboard_progresslistener) 887 888### OH_Pasteboard_ProgressInfo_GetProgress() 889 890```c 891int OH_Pasteboard_ProgressInfo_GetProgress(Pasteboard_ProgressInfo* progressInfo) 892``` 893 894**描述:** 895 896通过[Pasteboard_ProgressInfo](#pasteboard_progressinfo)获取粘贴进度,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时,才可以获取到此信息。 897 898**起始版本:** 15 899 900**参数:** 901 902| 名称 | 描述 | 903| ------------ | ------------------------------------------------------------ | 904| progressInfo | 定义进度上报的数据结构,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时才会上报此信息。 | 905 906**返回:** 907 908系统拷贝粘贴任务进度百分比。 909 910**参见:** 911 912[Pasteboard_ProgressInfo](#pasteboard_progressinfo) 913 914### OH_Pasteboard_ProgressCancel() 915 916```c 917void OH_Pasteboard_ProgressCancel(Pasteboard_GetDataParams* params); 918``` 919 920**描述:** 921 922通过[Pasteboard_GetDataParams](#pasteboard_getdataparams)取消正在进行的拷贝粘贴任务,且仅当进度指示选项[Pasteboard_ProgressIndicator](#pasteboard_progressindicator)设置为PASTEBOARD_NONE时此参数才有意义。 923 924**起始版本:** 15 925 926**参数:** 927 928| 名称 | 描述 | 929| ------ | -------------------------- | 930| params | 表示指向上下文数据的指针。 | 931 932**参见:** 933 934[Pasteboard_GetDataParams](#pasteboard_getdataparams) 935 936### OH_Pasteboard_GetDataWithProgress() 937 938```c 939OH_UdmfData* OH_Pasteboard_GetDataWithProgress(OH_Pasteboard* pasteboard, Pasteboard_GetDataParams* params, int* status); 940``` 941 942**描述:** 943 944获取剪贴板的内容和进度,不支持对文件夹的拷贝。 945 946**起始版本:** 15 947 948**参数:** 949 950| 名称 | 描述 | 951| ---------- | ------------------------------------------------------------ | 952| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 953| params | 应用在使用剪贴板提供的文件拷贝能力的情况下需要的参数。定义详见[Pasteboard_GetDataParams](#pasteboard_getdataparams)。 | 954| status | 该参数是输出参数,表示执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 | 955 956**返回:** 957 958执行成功时返回统一数据对象[OH_UdmfData](../apis-arkdata/_u_d_m_f.md)实例的指针。否则返回空指针。 959 960**参见:** 961 962[Pasteboard_GetDataParams](#pasteboard_getdataparams) 963 964### OH_Pasteboard_GetChangeCount() 965 966``` 967uint32_t OH_Pasteboard_GetChangeCount(OH_Pasteboard *pasteboard); 968``` 969**描述:** 970 971获取剪切板内容的变化次数。 972 973当剪切板内容过期或调用[OH_Pasteboard_ClearData](#oh_pasteboard_cleardata)等接口导致剪切板内容为空时,内容变化次数不会因此改变。 974 975系统重启或剪贴板服务异常重启时,剪贴板内容变化次数重新从0开始计数。对同一内容连续多次复制会被视作多次更改,每次复制均会导致内容变化次数增加。 976 977**起始版本:** 18 978 979**参数:** 980 981| 名称 | 描述 | 982| -------- | -------- | 983| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。 | 984 985**返回:** 986 987执行成功时返回剪切板内容的变化次数,否则返回0。 988 989**参见:** 990 991[OH_Pasteboard](#oh_pasteboard)