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
33
34### 枚举
35
36| 名称 | 描述 |
37| -------- | -------- |
38| [Pasteboard_NotifyType](#pasteboard_notifytype) { NOTIFY_LOCAL_DATA_CHANGE = 1, NOTIFY_REMOTE_DATA_CHANGE = 2 } | 剪贴板的数据变更类型。  |
39| [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<br/>} | 错误码信息。  |
40
41
42### 函数
43
44| 名称 | 描述 |
45| -------- | -------- |
46| [OH_PasteboardObserver](#oh_pasteboardobserver) \* [OH_PasteboardObserver_Create](#oh_pasteboardobserver_create) () | 创建一个剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针及实例对象。  |
47| int [OH_PasteboardObserver_Destroy](#oh_pasteboardobserver_destroy) ([OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 销毁剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针指向的实例对象。  |
48| 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) | 向剪贴板数据变更观察者设置回调函数。  |
49| [OH_Pasteboard](#oh_pasteboard) \* [OH_Pasteboard_Create](#oh_pasteboard_create) () | 创建剪贴板[OH_Pasteboard](#oh_pasteboard)指针及实例对象。  |
50| void [OH_Pasteboard_Destroy](#oh_pasteboard_destroy) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 销毁剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象。  |
51| int [OH_Pasteboard_Subscribe](#oh_pasteboard_subscribe) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int type, const [OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 订阅剪贴板的数据变更事件。  |
52| int [OH_Pasteboard_Unsubscribe](#oh_pasteboard_unsubscribe) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int type, const [OH_PasteboardObserver](#oh_pasteboardobserver) \*observer) | 取消对剪贴板数据变更事件的订阅。  |
53| bool [OH_Pasteboard_IsRemoteData](#oh_pasteboard_isremotedata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 判断剪贴板中的数据是否来自远端设备。  |
54| int [OH_Pasteboard_GetDataSource](#oh_pasteboard_getdatasource) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, char \*source, unsigned int len) | 获取剪贴板中数据的数据源。  |
55| bool [OH_Pasteboard_HasType](#oh_pasteboard_hastype) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, const char \*type) | 判断剪贴板中是否有指定类型的数据。  |
56| bool [OH_Pasteboard_HasData](#oh_pasteboard_hasdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 判断剪贴板中是否有数据。  |
57| OH_UdmfData \* [OH_Pasteboard_GetData](#oh_pasteboard_getdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, int \*status) | 获取剪贴板中的数据。  |
58| int [OH_Pasteboard_SetData](#oh_pasteboard_setdata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, OH_UdmfData \*data) | 将统一数据对象数据写入剪贴板。  |
59| int [OH_Pasteboard_ClearData](#oh_pasteboard_cleardata) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard) | 清空剪贴板中的数据。  |
60| char ** [OH_Pasteboard_GetMimeTypes](#oh_pasteboard_getmimetypes) ([OH_Pasteboard](#oh_pasteboard) \*pasteboard, unsigned int *count) | 获取剪切板中的MIME类型。  |
61
62
63## 类型定义说明
64
65
66### OH_Pasteboard
67
68```
69typedef struct OH_Pasteboard OH_Pasteboard
70```
71**描述:**
72
73定义剪贴板对象,用以操作系统剪贴板。
74
75**起始版本:** 13
76
77
78### OH_PasteboardObserver
79
80```
81typedef struct OH_PasteboardObserver OH_PasteboardObserver
82```
83**描述:**
84
85定义剪贴板数据变更观察者。
86
87**起始版本:** 13
88
89
90### PASTEBOARD_ErrCode
91
92```
93typedef enum PASTEBOARD_ErrCode PASTEBOARD_ErrCode
94```
95**描述:**
96
97错误码信息。
98
99**起始版本:** 13
100
101
102### Pasteboard_Finalize
103
104```
105typedef void(* Pasteboard_Finalize) (void *context)
106```
107**描述:**
108
109定义用于释放上下文的回调函数,剪贴板数据变更观察者对象销毁时触发。
110
111**起始版本:** 13
112
113**参数:**
114
115| 名称 | 描述 |
116| -------- | -------- |
117| context | 要释放的上下文指针。  |
118
119
120### Pasteboard_Notify
121
122```
123typedef void(* Pasteboard_Notify) (void *context, Pasteboard_NotifyType type)
124```
125**描述:**
126
127定义剪贴板内容变更时触发的回调函数。
128
129**起始版本:** 13
130
131**参数:**
132
133| 名称 | 描述 |
134| -------- | -------- |
135| context | 上下文信息,由函数[OH_PasteboardObserver_SetData](#oh_pasteboardobserver_setdata)传入。  |
136| type | 数据变更的类型。详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。  |
137
138
139### Pasteboard_NotifyType
140
141```
142typedef enum Pasteboard_NotifyType Pasteboard_NotifyType
143```
144**描述:**
145
146剪贴板的数据变更类型。
147
148**起始版本:** 13
149
150
151## 枚举类型说明
152
153
154### PASTEBOARD_ErrCode
155
156```
157enum PASTEBOARD_ErrCode
158```
159**描述:**
160
161错误码信息。
162
163**起始版本:** 13
164
165| 枚举值 | 描述 |
166| -------- | -------- |
167| ERR_OK  | 执行成功。  ||
168| ERR_PERMISSION_ERROR  | 权限校验失败。  ||
169| ERR_INVALID_PARAMETER  | 非法参数。  ||
170| ERR_DEVICE_NOT_SUPPORTED  | 设备能力不支持。  ||
171| ERR_INNER_ERROR  | 内部错误。  ||
172| ERR_BUSY  | 系统忙。  ||
173
174
175### Pasteboard_NotifyType
176
177```
178enum Pasteboard_NotifyType
179```
180**描述:**
181
182剪贴板的数据变更类型。
183
184**起始版本:** 13
185
186| 枚举值 | 描述 |
187| -------- | -------- |
188| NOTIFY_LOCAL_DATA_CHANGE  | 本地设备剪贴板数据变更。  ||
189| NOTIFY_REMOTE_DATA_CHANGE  | 组网内的非本地设备剪贴板数据变更。  ||
190
191
192## 函数说明
193
194
195### OH_Pasteboard_ClearData()
196
197```
198int OH_Pasteboard_ClearData (OH_Pasteboard * pasteboard)
199```
200**描述:**
201
202清空剪贴板中的数据。
203
204**起始版本:** 13
205
206**参数:**
207
208| 名称 | 描述 |
209| -------- | -------- |
210| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
211
212**返回:**
213
214返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
215
216**参见:**
217
218[OH_Pasteboard](#oh_pasteboard)
219
220[PASTEBOARD_ErrCode](#pasteboard_errcode)
221
222
223### OH_Pasteboard_Create()
224
225```
226OH_Pasteboard* OH_Pasteboard_Create ()
227```
228**描述:**
229
230创建剪贴板[OH_Pasteboard](#oh_pasteboard)指针及实例对象。
231
232**起始版本:** 13
233
234**返回:**
235
236执行成功则返回一个指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象的指针,否则返回nulllptr。
237
238**参见:**
239
240[OH_Pasteboard](#oh_pasteboard)
241
242
243### OH_Pasteboard_Destroy()
244
245```
246void OH_Pasteboard_Destroy (OH_Pasteboard * pasteboard)
247```
248**描述:**
249
250销毁剪贴板[OH_Pasteboard](#oh_pasteboard)实例对象。
251
252**起始版本:** 13
253
254**参数:**
255
256| 名称 | 描述 |
257| -------- | -------- |
258| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
259
260**参见:**
261
262[OH_Pasteboard](#oh_pasteboard)
263
264
265### OH_Pasteboard_GetData()
266
267```
268OH_UdmfData* OH_Pasteboard_GetData (OH_Pasteboard * pasteboard, int * status )
269```
270**描述:**
271
272获取剪贴板中的数据。
273
274**起始版本:** 13
275
276**参数:**
277
278| 名称 | 描述 |
279| -------- | -------- |
280| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
281| status | 该参数是输出参数,表示执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。  |
282
283**返回:**
284
285执行成功时返回统一数据对象**OH_UdmfData**实例的指针。否则返回空指针。
286
287**参见:**
288
289[OH_Pasteboard](#oh_pasteboard)
290
291OH_UdmfData
292
293[PASTEBOARD_ErrCode](#pasteboard_errcode)
294
295
296### OH_Pasteboard_GetDataSource()
297
298```
299int OH_Pasteboard_GetDataSource (OH_Pasteboard * pasteboard, char * source, unsigned int len )
300```
301**描述:**
302
303获取剪贴板中数据的数据源。
304
305**起始版本:** 13
306
307**参数:**
308
309| 名称 | 描述 |
310| -------- | -------- |
311| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
312| source | 该参数是输出参数,表示剪贴板中数据的数据源字符串。  |
313| len | 该参数是输出参数,表示数据源字符串的长度。  |
314
315**返回:**
316
317返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
318
319**参见:**
320
321[OH_Pasteboard](#oh_pasteboard)
322
323[PASTEBOARD_ErrCode](#pasteboard_errcode)
324
325
326### OH_Pasteboard_HasData()
327
328```
329bool OH_Pasteboard_HasData (OH_Pasteboard * pasteboard)
330```
331**描述:**
332
333判断剪贴板中是否有数据。
334
335**起始版本:** 13
336
337**参数:**
338
339| 名称 | 描述 |
340| -------- | -------- |
341| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
342
343**返回:**
344
345返回剪贴板中是否有数据。返回true表示剪贴板中有数据,返回false表示剪贴板中没有数据。
346
347**参见:**
348
349[OH_Pasteboard](#oh_pasteboard)
350
351
352### OH_Pasteboard_HasType()
353
354```
355bool OH_Pasteboard_HasType (OH_Pasteboard * pasteboard, const char * type )
356```
357**描述:**
358
359判断剪贴板中是否有指定类型的数据。
360
361**起始版本:** 13
362
363**参数:**
364
365| 名称 | 描述 |
366| -------- | -------- |
367| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
368| type | 表示要检查的数据类型。  |
369
370**返回:**
371
372返回剪贴板中是否有指定类型的数据。返回true表示剪贴板中包含指定类型的数据,返回false表示剪贴板中没有指定类型的数据。
373
374**参见:**
375
376[OH_Pasteboard](#oh_pasteboard)
377
378
379### OH_Pasteboard_IsRemoteData()
380
381```
382bool OH_Pasteboard_IsRemoteData (OH_Pasteboard * pasteboard)
383```
384**描述:**
385
386判断剪贴板中的数据是否来自远端设备。
387
388**起始版本:** 13
389
390**参数:**
391
392| 名称 | 描述 |
393| -------- | -------- |
394| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
395
396**返回:**
397
398返回剪贴板中的数据是否来自远端设备。返回true表示剪贴板中的数据来自远端设备,返回false表示剪贴板中数据来自本端设备。
399
400**参见:**
401
402[OH_Pasteboard](#oh_pasteboard)
403
404
405### OH_Pasteboard_SetData()
406
407```
408int OH_Pasteboard_SetData (OH_Pasteboard * pasteboard, OH_UdmfData * data )
409```
410**描述:**
411
412将统一数据对象数据写入剪贴板。
413
414**起始版本:** 13
415
416**参数:**
417
418| 名称 | 描述 |
419| -------- | -------- |
420| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
421| data | 表示指向统一数据对象**OH_UdmfData**实例的指针。  |
422
423**返回:**
424
425返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
426
427**参见:**
428
429[OH_Pasteboard](#oh_pasteboard)
430
431OH_UdmfData
432
433[PASTEBOARD_ErrCode](#pasteboard_errcode)
434
435
436### OH_Pasteboard_Subscribe()
437
438```
439int OH_Pasteboard_Subscribe (OH_Pasteboard * pasteboard, int type, const OH_PasteboardObserver * observer )
440```
441**描述:**
442
443订阅剪贴板的数据变更事件。
444
445**起始版本:** 13
446
447**参数:**
448
449| 名称 | 描述 |
450| -------- | -------- |
451| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
452| type | 表示订阅的剪贴板数据变更类型,详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。  |
453| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 它指定了剪贴板数据变更时触发的回调函数,详见:[OH_PasteboardObserver](#oh_pasteboardobserver)。  |
454
455**返回:**
456
457返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
458
459**参见:**
460
461[OH_Pasteboard](#oh_pasteboard)
462
463[OH_PasteboardObserver](#oh_pasteboardobserver)
464
465[Pasteboard_NotifyType](#pasteboard_notifytype)
466
467[PASTEBOARD_ErrCode](#pasteboard_errcode)
468
469
470### OH_Pasteboard_Unsubscribe()
471
472```
473int OH_Pasteboard_Unsubscribe (OH_Pasteboard * pasteboard, int type, const OH_PasteboardObserver * observer )
474```
475**描述:**
476
477取消对剪贴板数据变更事件的订阅。
478
479**起始版本:** 13
480
481**参数:**
482
483| 名称 | 描述 |
484| -------- | -------- |
485| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
486| type | 表示订阅的剪贴板数据变更类型,详见:[Pasteboard_NotifyType](#pasteboard_notifytype)。  |
487| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。 它指定了剪贴板数据变更时触发的回调函数,详见:[OH_PasteboardObserver](#oh_pasteboardobserver)。  |
488
489**返回:**
490
491返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
492
493**参见:**
494
495[OH_Pasteboard](#oh_pasteboard)
496
497[OH_PasteboardObserver](#oh_pasteboardobserver)
498
499[Pasteboard_NotifyType](#pasteboard_notifytype)
500
501[PASTEBOARD_ErrCode](#pasteboard_errcode)
502
503
504### OH_PasteboardObserver_Create()
505
506```
507OH_PasteboardObserver* OH_PasteboardObserver_Create ()
508```
509**描述:**
510
511创建一个剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针及实例对象。
512
513**起始版本:** 13
514
515**返回:**
516
517执行成功时返回一个指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例对象的指针,否则返回空指针。 当不再需要使用指针时,请使用[OH_PasteboardObserver_Destroy](#oh_pasteboardobserver_destroy)销毁实例对象,否则会导致内存泄漏。
518
519**参见:**
520
521[OH_PasteboardObserver](#oh_pasteboardobserver)
522
523
524### OH_PasteboardObserver_Destroy()
525
526```
527int OH_PasteboardObserver_Destroy (OH_PasteboardObserver * observer)
528```
529**描述:**
530
531销毁剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)指针指向的实例对象。
532
533**起始版本:** 13
534
535**参数:**
536
537| 名称 | 描述 |
538| -------- | -------- |
539| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。  |
540
541**返回:**
542
543返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
544
545**参见:**
546
547[OH_PasteboardObserver](#oh_pasteboardobserver)
548
549[PASTEBOARD_ErrCode](#pasteboard_errcode)
550
551
552### OH_PasteboardObserver_SetData()
553
554```
555int OH_PasteboardObserver_SetData (OH_PasteboardObserver * observer, void * context, const Pasteboard_Notify callback, const Pasteboard_Finalize finalize )
556```
557**描述:**
558
559向剪贴板数据变更观察者设置回调函数。
560
561**起始版本:** 13
562
563**参数:**
564
565| 名称 | 描述 |
566| -------- | -------- |
567| observer | 表示指向剪贴板数据变更观察者[OH_PasteboardObserver](#oh_pasteboardobserver)实例的指针。  |
568| context | 表示指向上下文数据的指针,将作为第一个参数传入[Pasteboard_Notify](#pasteboard_notify)。  |
569| callback | 表示数据变更回调函数。详见:[Pasteboard_Notify](#pasteboard_notify)。  |
570| finalize | 表示可选的回调函数,可以用于剪贴板数据变更观察者销毁时释放上下文数据。详见:[Pasteboard_Finalize](#pasteboard_finalize)。  |
571
572**返回:**
573
574返回执行的错误码。错误码定义详见[PASTEBOARD_ErrCode](#pasteboard_errcode)。 若返回ERR_OK,表示指向成功。 若返回ERR_INVALID_PARAMETER,表示传入了无效参数。
575
576**参见:**
577
578[OH_PasteboardObserver](#oh_pasteboardobserver)
579
580[Pasteboard_Notify](#pasteboard_notify)
581
582[PASTEBOARD_ErrCode](#pasteboard_errcode)
583
584### OH_Pasteboard_GetMimeTypes()
585
586```
587char ** OH_Pasteboard_GetMimeTypes (OH_Pasteboard * pasteboard, unsigned int * count)
588```
589**描述:**
590
591获取剪切板中的MIME类型。
592
593**起始版本:** 14
594
595**参数:**
596
597| 名称 | 描述 |
598| -------- | -------- |
599| pasteboard | 表示指向剪贴板[OH_Pasteboard](#oh_pasteboard)实例的指针。  |
600| count | 该参数是输出参数,结果集中的类型数量会写入该变量。  |
601
602**返回:**
603
604执行成功时返回剪切板所有内容的MIME类型,否则返回nullptr。
605
606本接口返回对象的生命周期由入参对象pasteboard管理,应用调用[OH_Pasteboard_Destroy](#oh_pasteboard_destroy)销毁入参对象pasteboard时同步释放本接口返回的结果,不允许应用主动释放。
607
608入参对象pasteboard只保存本接口最新返回的结果,接口历史调用获得的结果将失效。
609
610**参见:**
611
612[OH_Pasteboard](#oh_pasteboard)
613