• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)