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