• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.data.uniformDataStruct (标准化数据结构)
2<!--Kit: ArkData-->
3<!--Subsystem: DistributedDataManager-->
4<!--Owner: @jcwen-->
5<!--Designer: @junathuawei1; @zph000-->
6<!--Tester: @lj_liujing; @yippo; @logic42-->
7<!--Adviser: @ge-yafang-->
8
9本模块为统一数据管理框架(Unified Data Management Framework,UDMF)的组成部分,针对多对多跨应用数据共享的不同业务场景提供了部分标准化数据类型[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)对应的数据结构,方便不同应用间进行数据交互,减少数据类型适配的工作量。
10
11> **说明:**
12>
13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14
15## 导入模块
16
17```js
18import { uniformDataStruct } from '@kit.ArkData';
19```
20
21## PlainText
22
23纯文本类型数据,用于描述纯文本类型数据。
24
25**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
26
27| 名称        | 类型   | 只读 | 可选 | 说明                    |
28| ----------- | ------ | ---- | ---- |-----------------------|
29| uniformDataType | 'general.plain-text'| 是   | 否   | 统一数据类型标识,标识为纯文本类型数据,固定为“general.plain-text”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。                |
30| textContent | string | 否   | 否   | 纯文本内容。                |
31| abstract    | string | 否   | 是   | 纯文本摘要,非必填字段,默认值为空字符串。 |
32| details | Record<string, string> | 否   | 是 | 是一个字典类型对象,key和value都是string类型,用于描述文本内容详细属性。例如,可生成一个details内容为<br />{<br />"title":"标题",<br />"content":"内容"<br />}<br />的数据对象,用于描述一篇文章的详细属性。非必填字段,默认值为空字典对象。 |
33
34**示例:**
35
36```ts
37import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
38let plainTextDetails : Record<string, string> = {
39  'attr1': 'value1',
40  'attr2': 'value2'
41}
42let plainText : uniformDataStruct.PlainText = {
43  uniformDataType: 'general.plain-text',
44  textContent : 'This is plainText textContent example',
45  abstract : 'this is abstract',
46  details : plainTextDetails
47}
48console.info('plainText.uniformDataType: ' + plainText.uniformDataType);
49if(plainText.details != undefined){
50  let plainTextDetailsObj : Record<string, string> = plainText.details;
51  for(let kv of Object.entries(plainTextDetailsObj)) {
52    console.info('plainText.details.attr: ' + kv[0] + ', value:' + kv[1]);
53  }
54}
55let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.PLAIN_TEXT, plainText);
56```
57
58## Hyperlink
59
60超链接类型数据,用于描述超链接类型数据。
61
62**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
63
64| 名称        | 类型   | 只读 | 可选 | 说明           |
65| ----------- | ------ | ---- | ---- |--------------|
66| uniformDataType | 'general.hyperlink'| 是   | 否   | 统一数据类型标识为超链接类型数据,固定为“general.hyperlink”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。
67| url         | string | 否   | 否   | 链接url。       |
68| description | string | 否   | 是   | 链接内容描述,非必填字段,默认值为空字符串。 |
69| details | Record<string, string> | 否   | 是  | 是一个字典类型对象,key和value都是string类型,用于描述Hyperlink的详细属性内容。例如,可生成一个details内容为<br />{<br />"title":"标题",<br />"content":"内容"<br />}<br />的数据对象。非必填字段,默认值为空字典对象。 |
70
71**示例:**
72
73```ts
74import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
75let hyperlinkDetails : Record<string, string> = {
76  'attr1': 'value1',
77  'attr2': 'value2'
78}
79let hyperlink : uniformDataStruct.Hyperlink = {
80  uniformDataType:'general.hyperlink',
81  url : 'www.XXX.com',
82  description : 'This is the description of this hyperlink',
83  details : hyperlinkDetails
84}
85console.info('hyperlink.uniformDataType: ' + hyperlink.uniformDataType);
86let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.HYPERLINK, hyperlink);
87```
88
89## HTML
90
91HTML类型数据,用于描述超文本标记语言数据。
92
93**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
94
95| 名称         | 类型   | 只读 | 可选 | 说明                    |
96| ------------ | ------ | ---- | ---- |-----------------------|
97| uniformDataType | 'general.html'| 是   | 否   | 统一数据类型标识为html类型数据,固定为“general.html”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。
98| htmlContent  | string | 否   | 否   | html格式内容。             |
99| plainContent | string | 否   | 是   | 去除html标签后的纯文本内容,非必填字段,默认值为空字符串。 |
100| details | Record<string, string> | 否   | 是   | 是一个字典类型对象,key和value都是string类型,用于描述HTML的详细属性内容。例如,可生成一个details内容为<br />{<br />"title":"标题",<br />"content":"内容"<br />}<br />的数据对象。非必填字段,默认值为空字典对象。 |
101
102**示例:**
103
104```ts
105import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
106let htmlObjDetails : Record<string, string> = {
107  'attr1': 'value1',
108  'attr2': 'value2'
109}
110let htmlObj : uniformDataStruct.HTML = {
111  uniformDataType :'general.html',
112  htmlContent : '<div><p>标题</p></div>',
113  plainContent : 'this is plainContent',
114  details : htmlObjDetails
115}
116console.info('htmlObj.uniformDataType: ' + htmlObj.uniformDataType);
117let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.HTML, htmlObj);
118```
119
120## OpenHarmonyAppItem
121
122系统定义的桌面图标类型数据。
123
124**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
125
126| 名称        | 类型   | 只读 | 可选 | 说明              |
127| ----------- | ------ | ---- | ---- |-----------------|
128| uniformDataType | 'openharmony.app-item'| 是   | 否   | 统一数据类型标识为桌面图标类型数据,固定为“openharmony.app-item”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。
129| appId       | string | 否   | 否   | 图标对应的应用id。      |
130| appName     | string | 否   | 否   | 图标对应的应用名。       |
131| appIconId   | string | 否   | 否   | 图标的图片id。        |
132| appLabelId  | string | 否   | 否   | 图标名称对应的标签id。    |
133| bundleName  | string | 否   | 否   | 图标对应的应用bundle名。 |
134| abilityName | string | 否   | 否   | 图标对应的应用ability名。 |
135| details | Record<string, number \| string \| Uint8Array> | 否   | 是   | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。|
136
137
138**示例:**
139
140```ts
141import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
142let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
143let appItemDetails : Record<string, number | string | Uint8Array> = {
144  'appItemKey1': 123,
145  'appItemKey2': 'appItemValue',
146  'appItemKey3': u8Array
147}
148let appItem : uniformDataStruct.OpenHarmonyAppItem = {
149  uniformDataType:'openharmony.app-item',
150  appId : 'MyAppId',
151  appName : 'MyAppName',
152  appIconId : 'MyAppIconId',
153  appLabelId : 'MyAppLabelId',
154  bundleName : 'MyBundleName',
155  abilityName : 'MyAbilityName',
156  details : appItemDetails
157}
158console.info('appItem.uniformDataType: ' + appItem.uniformDataType);
159let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.OPENHARMONY_APP_ITEM, appItem);
160```
161
162## ContentForm<sup>14+</sup>
163
164内容卡片类型数据。
165
166**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
167
168| 名称         | 类型   | 只读 | 可选 | 说明                                                                                                                             |
169|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------|
170| uniformDataType | 'general.content-form'| 是   | 否  | 统一数据类型标识为内容卡片类型数据,固定为“general.content-form”。
171| title      | string | 否   | 否  | 内容卡片的标题。|
172| thumbData  | Uint8Array | 否   | 是  | 内容卡片对应的图片数据。|
173| description| string | 否   | 是  | 内容卡片中的描述信息。|
174| appIcon    | Uint8Array | 否   | 是  | 内容卡片中的应用图标数据。|
175| appName    | string | 否   | 是  | 内容卡片中应用的应用名。|
176| linkUri    | string | 否   | 是  | 内容卡片对应的跳转超链接。|
177
178
179**示例:**
180
181```ts
182import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
183let thumbDataU8Array = new Uint8Array([1, 2, 3, 4, 5]);
184let appIconU8Array = new Uint8Array([6, 7, 8, 9, 10]);
185let contentForm : uniformDataStruct.ContentForm = {
186  uniformDataType : 'general.content-form',
187  title : 'MyTitle',
188  thumbData : thumbDataU8Array,
189  description : 'MyDescription',
190  appName : 'MyAppName',
191  linkUri : 'MyLinkUri',
192  appIcon : appIconU8Array
193}
194console.info('contentForm.uniformDataType: ' + contentForm.uniformDataType);
195let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.CONTENT_FORM, contentForm);
196```
197
198## Form<sup>15+</sup>
199
200系统定义的卡片类型数据。
201
202**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
203
204| 名称         | 类型   | 只读 | 可选 | 说明                                                                                                                             |
205|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------|
206| uniformDataType | 'openharmony.form'| 是   | 否  | 统一数据类型标识为卡片类型数据,固定为“openharmony.form”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。
207| formId     | number | 否   | 否  | 卡片id。|
208| formName   | string | 否   | 否  | 卡片名。|
209| bundleName | string | 否   | 否  | 卡片所属的bundle名。|
210| abilityName| string | 否   | 否  | 卡片对应的ability名。|
211| module     | string | 否   | 否  | 卡片所属的module名。|
212| details | Record<string, number \| string \| Uint8Array> | 否   | 是   | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。|
213
214
215**示例:**
216
217```ts
218import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
219let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
220let formDetails : Record<string, number | string | Uint8Array> = {
221  'formKey1': 123,
222  'formKey2': 'formValue',
223  'formKey3': u8Array
224}
225let form : uniformDataStruct.Form = {
226  uniformDataType : 'openharmony.form',
227  formId : 1,
228  formName : 'formName',
229  bundleName : 'com.xx.app',
230  abilityName : 'abilityName',
231  module : 'module',
232  details : formDetails
233}
234console.info('form.uniformDataType: ' + form.uniformDataType);
235let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.OPENHARMONY_FORM, form);
236```
237
238## FileUri<sup>15+</sup>
239
240文件地址类型数据。
241
242**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
243
244| 名称         | 类型   | 只读 | 可选 | 说明                                                                                                                             |
245|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------|
246| uniformDataType | 'general.file-uri'| 是   | 否  | 统一数据类型标识为文件地址类型数据,固定为“general.file-uri”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。
247| oriUri     | string | 否   | 否  | 文件路径。|
248| fileType   | string | 否   | 否  | 文件类型(必须是UTD类型,详情参考[UTD预置列表](../../database/uniform-data-type-list.md))。fileType最大长度限制为1024个字节。|
249| details | Record<string, number \| string \| Uint8Array> | 否   | 是   | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。|
250
251
252**示例:**
253
254```ts
255import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
256let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
257let fileUriDetails : Record<string, number | string | Uint8Array> = {
258  'fileUriKey1': 123,
259  'fileUriKey2': 'fileUriValue',
260  'fileUriKey3': u8Array
261}
262let fileUri : uniformDataStruct.FileUri = {
263  uniformDataType : 'general.file-uri',
264  oriUri : 'www.xx.com',
265  fileType : 'general.image',
266  details : fileUriDetails
267}
268console.info('fileUri.uniformDataType: ' + fileUri.uniformDataType);
269// 当使用FileUri类型的标准化数据结构构造record时,推荐入参中的type值设为uniformTypeDescriptor.UniformDataType.FILE_URI
270let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.FILE_URI, fileUri);
271```
272
273## PixelMap<sup>15+</sup>
274
275系统定义的像素图类型数据。
276
277**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core
278
279| 名称         | 类型   | 只读 | 可选 | 说明                                                                                                                             |
280|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------|
281| uniformDataType | 'openharmony.pixel-map'| 是   | 否  | 统一数据类型标识为像素图类型数据,固定为“openharmony.pixel-map”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。
282| pixelMap     | image.PixelMap | 否   | 否  | 像素图二进制数据。|
283| details | Record<string, number \| string \| Uint8Array> | 否   | 是   | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。|
284
285
286**示例:**
287
288```ts
289import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
290import { image } from '@kit.ImageKit';
291
292let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
293let arrayBuffer = new ArrayBuffer(4*200*200);
294let opt : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 200, width: 200 }, alphaType: 3 };
295let pixelMapDetails : Record<string, number | string | Uint8Array> = {
296  'pixelMapKey1': 123,
297  'pixelMapKey2': 'pixelMapValue',
298  'pixelMapKey3': u8Array
299}
300let pixelMap : uniformDataStruct.PixelMap = {
301  uniformDataType : 'openharmony.pixel-map',
302  pixelMap : image.createPixelMapSync(arrayBuffer, opt),
303  details : pixelMapDetails
304}
305console.info('pixelMap.uniformDataType: ' + pixelMap.uniformDataType);
306let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.OPENHARMONY_PIXEL_MAP, pixelMap);
307```