harmony 鸿蒙@ohos.data.UDMF(统一数据管理框架)
@ohos.data.UDMF(统一数据管理框架)
本模块提供数据统一管理的能力,包括对文本、图片等数据类型的标准化定义。通过调用对应数据类型的接口,应用程序可将各种数据封装为统一数据对象。
说明:
本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import UDMF from '@ohos.data.UDMF';
UnifiedDataType
系统能力: SystemCapability.DistributedDataManager.UDMF.Core
名称 | 值 | 说明 |
---|---|---|
TEXT | ‘Text’ | 文本类型。 |
PLAIN_TEXT | ‘Text.PlainText’ | 纯文本类型。 |
HYPERLINK | ‘Text.Hyperlink’ | 超链接类型。 |
HTML | ‘Text.HTML’ | 富文本类型。 |
FILE | ‘File’ | 文件类型。 |
IMAGE | ‘File.Media.Image’ | 图片类型。 |
VIDEO | ‘File.Media.Video’ | 视频类型。 |
FOLDER | ‘File.Folder’ | 文件夹类型。 |
SYSTEM_DEFINED_RECORD | ‘SystemDefinedType’ | 系统服务数据类型。 |
SYSTEM_DEFINED_FORM | ‘SystemDefinedType.Form’ | 卡片类型。 |
SYSTEM_DEFINED_APP_ITEM | ‘SystemDefinedType.AppItem’ | 图标类型。 |
SYSTEM_DEFINED_PIXEL_MAP | ‘SystemDefinedType.PixelMap’ | 二进制图片类型。 |
APPLICATION_DEFINED_RECORD | ‘ApplicationDefinedType’ | 应用自定义类型。 |
UnifiedData
表示UDMF统一数据对象,提供封装一组数据记录的方法。
系统能力: SystemCapability.DistributedDataManager.UDMF.Core
constructor
constructor(record: UnifiedRecord)
用于创建带有一条数据记录的统一数据对象。
系统能力: SystemCapability.DistributedDataManager.UDMF.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
record | UnifiedRecord | 是 | 要添加到统一数据对象中的数据记录,该记录为UnifiedRecord子类对象。 |
示例:
let text = new UDMF.PlainText();
text.textContent = 'this is textContent of text';
let unifiedData = new UDMF.UnifiedData(text);
addRecord
addRecord(record: UnifiedRecord): void
在当前统一数据对象中添加一条数据记录。
系统能力: SystemCapability.DistributedDataManager.UDMF.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
record | UnifiedRecord | 是 | 要添加到统一数据对象中的数据记录,该记录为UnifiedRecord子类对象。 |
示例:
let text1 = new UDMF.PlainText();
text1.textContent = 'this is textContent of text1';
let unifiedData = new UDMF.UnifiedData(text1);
let text2 = new UDMF.PlainText();
text2.textContent = 'this is textContent of text2';
unifiedData.addRecord(text2);
getRecords
getRecords(): Array<UnifiedRecord>
将当前统一数据对象中的所有数据记录取出。通过本接口取出的数据为UnifiedRecord类型,需通过getType获取数据类型后转为子类再使用。
系统能力 :SystemCapability.DistributedDataManager.UDMF.Core
返回值:
类型 | 说明 |
---|---|
Array<UnifiedRecord> | 当前统一数据对象内所添加的记录。 |
示例:
let text = new UDMF.PlainText();
text.textContent = 'this is textContent of text';
let unifiedData = new UDMF.UnifiedData(text);
let link = new UDMF.Hyperlink();
link.url = 'www.XXX.com';
unifiedData.addRecord(link);
let records = unifiedData.getRecords();
for (let i = 0; i < records.length; i++) {
let record = records[i];
if (record.getType() == UDMF.UnifiedDataType.PLAIN_TEXT) {
let plainText = <UDMF.PlainText> (record);
console.info(`textContent: ${plainText.textContent}`);
} else if (record.getType() == UDMF.UnifiedDataType.HYPERLINK) {
let hyperlink = <UDMF.Hyperlink> (record);
console.info(`linkUrl: ${hyperlink.url}`);
}
}
Summary
描述某一统一数据对象的数据摘要,包括所含数据类型及大小,当前暂不支持。
系统能力: SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
summary | { [key: string]: number } | 是 | 否 | 是一个字典类型对象,key表示数据类型(见UnifiedDataType),value为统一数据对象中该类型记录大小总和(单位:Byte)。 |
totalSize | number | 是 | 否 | 统一数据对象内记录总大小(单位:Byte)。 |
UnifiedRecord
对UDMF支持的数据内容的抽象定义,称为数据记录。一个统一数据对象内包含一条或多条数据记录,例如一条文本记录、一条图片记录、一条HTML记录等。
UnifiedRecord是一个抽象父类,无法保存具体数据内容,应用在使用时,不能将其添加到统一数据对象中,而应该创建带有数据内容的具体子类,如Text、Image等。
getType
getType(): string
获取当前数据记录的类型。由于从统一数据对象中调用getRecords所取出的数据是UnifiedRecord对象,因此需要通过本接口查询此记录的具体类型,再将该UnifiedRecord对象转换为其子类,调用子类接口。
系统能力 :SystemCapability.DistributedDataManager.UDMF.Core
返回值:
类型 | 说明 |
---|---|
string | 当前数据记录对应的具体数据类型,见UnifiedDataType。 |
示例:
let text = new UDMF.PlainText();
text.textContent = 'this is textContent of text';
let unifiedData = new UDMF.UnifiedData(text);
let records = unifiedData.getRecords();
if (records[0].getType() == UDMF.UnifiedDataType.PLAIN_TEXT) {
let plainText = <UDMF.PlainText> (records[0]);
console.info(`textContent: ${plainText.textContent}`);
}
Text
文本类型数据,是UnifiedRecord的子类,也是文本类型数据的基类,用于描述文本类数据,推荐开发者优先使用Text的子类描述数据,如PlainText、Hyperlink、HTML等具体子类。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
details | { [key: string]: string } | 是 | 是 | 是一个字典类型对象,key和value都是string类型,用于描述文本内容。例如,可生成一个details内容为 { “title”:“标题”, “content”:“内容” } 的数据对象,用于描述一篇文章。非必填字段,默认值为空字典对象。 |
示例:
let text = new UDMF.Text();
text.details = {
title: 'MyTitle',
content: 'this is content',
};
let unifiedData = new UDMF.UnifiedData(text);
PlainText
纯文本类型数据,是Text的子类,用于描述纯文本类数据。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
textContent | string | 是 | 是 | 纯文本内容。 |
abstract | string | 是 | 是 | 纯文本摘要,非必填字段,默认值为空字符串。 |
示例:
let text = new UDMF.PlainText();
text.textContent = 'this is textContent';
text.abstract = 'this is abstract';
Hyperlink
超链接类型数据,是Text的子类,用于描述超链接类型数据。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
url | string | 是 | 是 | 链接url。 |
description | string | 是 | 是 | 链接内容描述,非必填字段,默认值为空字符串。 |
示例:
let link = new UDMF.Hyperlink();
link.url = 'www.XXX.com';
link.description = 'this is description';
HTML
HTML类型数据,是Text的子类,用于描述超文本标记语言数据。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
htmlContent | string | 是 | 是 | html格式内容。 |
plainContent | string | 是 | 是 | 去除html标签后的纯文本内容,非必填字段,默认值为空字符串。 |
示例:
let html = new UDMF.HTML();
html.htmlContent = '<div><p>标题</p></div>';
html.plainContent = 'this is plainContent';
File
File类型数据,是UnifiedRecord的子类,也是文件类型数据的基类,用于描述文件类型数据,推荐开发者优先使用File的子类描述数据,如Image、Video、Folder等具体子类。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
details | { [key: string]: string } | 是 | 是 | 是一个字典类型对象,key和value都是string类型,用于描述文件相关信息。例如,可生成一个details内容为 { “name”:“文件名”, “type”:“文件类型” } 的数据对象,用于描述一个文件。非必填字段,默认值为空字典对象。 |
uri | string | 是 | 是 | 文件数据uri。 |
示例:
let file = new UDMF.File();
file.details = {
name: 'test',
type: 'txt',
};
file.uri = 'schema://com.samples.test/files/test.txt';
Image
图片类型数据,是File的子类,用于描述图片文件。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
imageUri | string | 是 | 是 | 图片数据uri。 |
示例:
let image = new UDMF.Image();
image.imageUri = 'schema://com.samples.test/files/test.jpg';
Video
视频类型数据,是File的子类,用于描述视频文件。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
videoUri | string | 是 | 是 | 视频数据uri。 |
示例:
let video = new UDMF.Video();
video.videoUri = 'schema://com.samples.test/files/test.mp4';
Folder
文件夹类型数据,是File的子类,用于描述文件夹。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
folderUri | string | 是 | 是 | 文件夹uri。 |
示例:
let folder = new UDMF.Folder();
folder.folderUri = 'schema://com.samples.test/files/folder/';
SystemDefinedRecord
SystemDefinedRecord是UnifiedRecord的子类,也是OpenHarmony系统特有数据类型的基类,用于描述仅在OpenHarmony系统范围内流通的特有数据类型,推荐开发者优先使用SystemDefinedRecord的子类描述数据,如SystemDefinedForm、SystemDefinedAppItem、SystemDefinedPixelMap等具体子类。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
details | { [key: string]: number |string |Uint8Array } | 是 | 是 | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。 |
示例:
let sdr = new UDMF.SystemDefinedRecord();
let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
sdr.details = {
title: 'recordTitle',
version: 1,
content: u8Array,
};
let unifiedData = new UDMF.UnifiedData(sdr);
SystemDefinedForm
卡片类型数据,是SystemDefinedRecord的子类。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
formId | number | 是 | 是 | 卡片id。 |
formName | string | 是 | 是 | 卡片名称。 |
bundleName | string | 是 | 是 | 卡片所属的bundle名。 |
abilityName | string | 是 | 是 | 卡片对应的ability名。 |
module | string | 是 | 是 | 卡片所属的module名。 |
示例:
let form = new UDMF.SystemDefinedForm();
form.formId = 123456;
form.formName = 'MyFormName';
form.bundleName = 'MyBundleName';
form.abilityName = 'MyAbilityName';
form.module = 'MyModule';
let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
form.details = {
formKey1: 123,
formKey2: 'formValue',
formKey3: u8Array,
};
let unifiedData = new UDMF.UnifiedData(form);
SystemDefinedAppItem
图标类型数据,是SystemDefinedRecord的子类。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
appId | string | 是 | 是 | 图标对应的应用id。 |
appName | string | 是 | 是 | 图标对应的应用名。 |
appIconId | string | 是 | 是 | 图标的图片id。 |
appLabelId | string | 是 | 是 | 图标名称对应的标签id。 |
bundleName | string | 是 | 是 | 图标对应的应用bundle名。 |
abilityName | string | 是 | 是 | 图标对应的应用ability名。 |
示例:
let appItem = new UDMF.SystemDefinedAppItem();
appItem.appId = 'MyAppId';
appItem.appName = 'MyAppName';
appItem.appIconId = 'MyAppIconId';
appItem.appLabelId = 'MyAppLabelId';
appItem.bundleName = 'MyBundleName';
appItem.abilityName = 'MyAbilityName';
let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
appItem.details = {
appItemKey1: 123,
appItemKey2: 'appItemValue',
appItemKey3: u8Array,
};
let unifiedData = new UDMF.UnifiedData(appItem);
SystemDefinedPixelMap
与系统侧定义的PixelMap数据类型对应的图片数据类型,是SystemDefinedRecord的子类,仅保存PixelMap的二进制数据。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
rawData | Uint8Array | 是 | 是 | PixelMap对象的二进制数据。 |
示例:
import image from '@ohos.multimedia.image'; // PixelMap类定义所在模块
const color = new ArrayBuffer(96); // 创建pixelmap对象
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (error, pixelmap) => {
if(error) {
console.log('Failed to create pixelmap.');
} else {
console.log('Succeeded in creating pixelmap.');
let arrayBuf = new ArrayBuffer(pixelmap.getPixelBytesNumber());
pixelmap.readPixelsToBuffer(arrayBuf);
let u8Array = new Uint8Array(arrayBuf);
let sdpixel = new UDMF.SystemDefinedPixelMap();
sdpixel.rawData = u8Array;
let unifiedData = new UDMF.UnifiedData(sdpixel);
}
})
ApplicationDefinedRecord
ApplicationDefinedRecord是UnifiedRecord的子类,也是应用自定义数据类型的基类,用于描述仅在应用生态内部流通的自定义数据类型,应用可基于此类进行自定义数据类型的扩展。
系统能力:SystemCapability.DistributedDataManager.UDMF.Core
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
applicationDefinedType | string | 是 | 是 | 应用自定义类型标识符,必须以’ApplicationDefined’开头。 |
rawData | Uint8Array | 是 | 是 | 应用自定义数据类型的二进制数据。 |
示例:
let record = new UDMF.ApplicationDefinedRecord();
let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
record.applicationDefinedType = 'ApplicationDefinedType';
record.rawData = u8Array;
let unifiedData = new UDMF.UnifiedData(record);
你可能感兴趣的鸿蒙文章
harmony 鸿蒙BundleStatusCallback
harmony 鸿蒙@ohos.bundle.innerBundleManager (innerBundleManager模块)
harmony 鸿蒙@ohos.distributedBundle (分布式包管理)
harmony 鸿蒙@ohos.bundle (Bundle模块)
harmony 鸿蒙@ohos.enterprise.EnterpriseAdminExtensionAbility (企业设备管理扩展能力)
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦