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```