@ohos.data.unifiedDataChannel (标准化数据通路)

本模块为统一数据管理框架(Unified Data Management Framework,UDMF)的组成部分,针对多对多跨应用数据共享的不同业务场景提供了标准化的数据通路,提供了标准化的数据接入与读取接口。同时对文本、图片等数据类型提供了标准化定义,方便不同应用间进行数据交互,减少数据类型适配的工作量。

说明:

本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';

UnifiedData

表示UDMF统一数据对象,提供封装一组数据记录的方法。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

constructor

constructor(record: UnifiedRecord)

用于创建带有一条数据记录的统一数据对象。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
record UnifiedRecord 要添加到统一数据对象中的数据记录,该记录为UnifiedRecord子类对象。

示例:

let text = new unifiedDataChannel.PlainText();
text.textContent = 'this is textContent of text';
let unifiedData = new unifiedDataChannel.UnifiedData(text);

addRecord

addRecord(record: UnifiedRecord): void

在当前统一数据对象中添加一条数据记录。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
record UnifiedRecord 要添加到统一数据对象中的数据记录,该记录为UnifiedRecord子类对象。

示例:

let text1 = new unifiedDataChannel.PlainText();
text1.textContent = 'this is textContent of text1';
let unifiedData = new unifiedDataChannel.UnifiedData(text1);

let text2 = new unifiedDataChannel.PlainText();
text2.textContent = 'this is textContent of text2';
unifiedData.addRecord(text2);

getRecords

getRecords(): Array<UnifiedRecord>

将当前统一数据对象中的所有数据记录取出。通过本接口取出的数据为UnifiedRecord类型,需通过getType获取数据类型后转为子类再使用。

系统能力 :SystemCapability.DistributedDataManager.UDMF.Core

返回值:

类型 说明
Array<UnifiedRecord> 当前统一数据对象内所添加的记录。

示例:

import uniformTypeDescriptor from '@ohos.data.uniformTypeDescriptor';

let text = new unifiedDataChannel.PlainText();
text.textContent = 'this is textContent of text';
let unifiedData = new unifiedDataChannel.UnifiedData(text);

let link = new unifiedDataChannel.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() == uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {
    let plainText = record as unifiedDataChannel.PlainText;
    console.info(`textContent: ${plainText.textContent}`);
  } else if (record.getType() == uniformTypeDescriptor.UniformDataType.HYPERLINK) {
    let hyperlink = record as unifiedDataChannel.Hyperlink;
    console.info(`linkUrl: ${hyperlink.url}`);
  }
}

Summary

描述某一统一数据对象的数据摘要,包括所含数据类型及大小,当前暂不支持。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
summary Record<string, number> 是一个字典类型对象,key表示数据类型(见UniformDataType),value为统一数据对象中该类型记录大小总和(单位:Byte)。
totalSize number 统一数据对象内记录总大小(单位:Byte)。

UnifiedRecord

对UDMF支持的数据内容的抽象定义,称为数据记录。一个统一数据对象内包含一条或多条数据记录,例如一条文本记录、一条图片记录、一条HTML记录等。

UnifiedRecord是一个抽象父类,无法保存具体数据内容,应用在使用时,不能将其添加到统一数据对象中,而应该创建带有数据内容的具体子类,如Text、Image等。

getType

getType(): string

获取当前数据记录的类型。由于从统一数据对象中调用getRecords所取出的数据是UnifiedRecord对象,因此需要通过本接口查询此记录的具体类型,再将该UnifiedRecord对象转换为其子类,调用子类接口。

系统能力 :SystemCapability.DistributedDataManager.UDMF.Core

返回值:

类型 说明
string 当前数据记录对应的具体数据类型,见UniformDataType

示例:

import uniformTypeDescriptor from '@ohos.data.uniformTypeDescriptor';

let text = new unifiedDataChannel.PlainText();
text.textContent = 'this is textContent of text';
let unifiedData = new unifiedDataChannel.UnifiedData(text);

let records = unifiedData.getRecords();
if (records[0].getType() == uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {
  let plainText = records[0] as unifiedDataChannel.PlainText;
  console.info(`textContent: ${plainText.textContent}`);
}

Text

文本类型数据,是UnifiedRecord的子类,也是文本类型数据的基类,用于描述文本类数据,推荐开发者优先使用Text的子类描述数据,如PlainTextHyperlinkHTML等具体子类。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
details Record<string, string> 是一个字典类型对象,key和value都是string类型,用于描述文本内容。例如,可生成一个details内容为
{
"title":"标题",
"content":"内容"
}
的数据对象,用于描述一篇文章。非必填字段,默认值为空字典对象。

示例:

let text = new unifiedDataChannel.Text();
text.details = {
  title: 'MyTitle',
  content: 'this is content',
};
let unifiedData = new unifiedDataChannel.UnifiedData(text);

PlainText

纯文本类型数据,是Text的子类,用于描述纯文本类数据。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
textContent string 纯文本内容。
abstract string 纯文本摘要,非必填字段,默认值为空字符串。

示例:

let text = new unifiedDataChannel.PlainText();
text.textContent = 'this is textContent';
text.abstract = 'this is abstract';

超链接类型数据,是Text的子类,用于描述超链接类型数据。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
url string 链接url。
description string 链接内容描述,非必填字段,默认值为空字符串。

示例:

let link = new unifiedDataChannel.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 unifiedDataChannel.HTML();
html.htmlContent = '<div><p>标题</p></div>';
html.plainContent = 'this is plainContent';

File

File类型数据,是UnifiedRecord的子类,也是文件类型数据的基类,用于描述文件类型数据,推荐开发者优先使用File的子类描述数据,如ImageVideoFolder等具体子类。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
details Record<string, string> 是一个字典类型对象,key和value都是string类型,用于描述文件相关信息。例如,可生成一个details内容为
{
"name":"文件名",
"type":"文件类型"
}
的数据对象,用于描述一个文件。非必填字段,默认值为空字典对象。
uri string 文件数据uri。

示例:

let file = new unifiedDataChannel.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 unifiedDataChannel.Image();
image.imageUri = 'schema://com.samples.test/files/test.jpg';

Video

视频类型数据,是File的子类,用于描述视频文件。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
videoUri string 视频数据uri。

示例:

let video = new unifiedDataChannel.Video();
video.videoUri = 'schema://com.samples.test/files/test.mp4';

Audio

音频类型数据,是File的子类,用于描述音频文件。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
audioUri string 音频数据uri。

示例:

let audio = new unifiedDataChannel.Audio();
audio.audioUri = 'schema://com.samples.test/files/test.mp3';

Folder

文件夹类型数据,是File的子类,用于描述文件夹。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
folderUri string 文件夹uri。

示例:

let folder = new unifiedDataChannel.Folder();
folder.folderUri = 'schema://com.samples.test/files/folder/';

SystemDefinedRecord

SystemDefinedRecord是UnifiedRecord的子类,也是OpenHarmony系统特有数据类型的基类,用于描述仅在OpenHarmony系统范围内流通的特有数据类型,推荐开发者优先使用SystemDefinedRecord的子类描述数据,如SystemDefinedFormSystemDefinedAppItemSystemDefinedPixelMap等具体子类。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
details Record<string, number | string | Uint8Array> 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。

示例:

let sdr = new unifiedDataChannel.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 unifiedDataChannel.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 unifiedDataChannel.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 unifiedDataChannel.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 unifiedDataChannel.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 unifiedDataChannel.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: image.InitializationOptions = {
  editable: true, pixelFormat: 3, size: {
    height: 4, width: 6
  }
}
image.createPixelMap(color, opts, (error, pixelmap) => {
  if (error) {
    console.error('Failed to create pixelmap.');
  } else {
    console.info('Succeeded in creating pixelmap.');
    let arrayBuf = new ArrayBuffer(pixelmap.getPixelBytesNumber());
    pixelmap.readPixelsToBuffer(arrayBuf);
    let u8Array = new Uint8Array(arrayBuf);
    let sdpixel = new unifiedDataChannel.SystemDefinedPixelMap();
    sdpixel.rawData = u8Array;
    let unifiedData = new unifiedDataChannel.UnifiedData(sdpixel);
  }
})

ApplicationDefinedRecord

ApplicationDefinedRecord是UnifiedRecord的子类,也是应用自定义数据类型的基类,用于描述仅在应用生态内部流通的自定义数据类型,应用可基于此类进行自定义数据类型的扩展。

系统能力:SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 说明
applicationDefinedType string 应用自定义类型标识符,必须以'ApplicationDefined'开头。
rawData Uint8Array 应用自定义数据类型的二进制数据。

示例:

let record = new unifiedDataChannel.ApplicationDefinedRecord();
let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
record.applicationDefinedType = 'ApplicationDefinedType';
record.rawData = u8Array;
let unifiedData = new unifiedDataChannel.UnifiedData(record);

Intention

UDMF已经支持的数据通路枚举类型。其主要用途是标识各种UDMF数据通路所面向的不同业务场景。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

名称 说明
DATA_HUB 'DataHub' 公共数据通路。

Options

UDMF提供的数据操作接口可选项,包含intention和key两个可选参数。无默认值,当对应接口不需要此参数时可不填,具体要求参照方法接口的参数说明。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

名称 类型 可读 可写 必填 说明
intention Intention 表示数据操作相关的数据通路类型。
key string UDMF中数据对象的唯一标识符,可通过insertData接口的返回值获取。
由udmf:/、intention、bundleName和groupId四部分组成,以'/'连接,比如:udmf://DataHub/com.ohos.test/0123456789。
其中udmf:/固定,DataHub为对应枚举的取值,com.ohos.test为包名,0123456789为随机生成的groupId。

unifiedDataChannel.insertData

insertData(options: Options, data: UnifiedData, callback: AsyncCallback<string>): void

将数据写入UDMF的公共数据通路中,并生成数据的唯一标识符,使用callback异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,仅需要intention的值。
data UnifiedData 目标数据。
callback AsyncCallback<string> 回调函数,返回写入UDMF的数据的唯一标识符key的值。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import { BusinessError } from '@ohos.base';

let plainText = new unifiedDataChannel.PlainText();
plainText.textContent = 'hello world!';
let unifiedData = new unifiedDataChannel.UnifiedData(plainText);

let options: unifiedDataChannel.Options = {
  intention: unifiedDataChannel.Intention.DATA_HUB
}
try {
  unifiedDataChannel.insertData(options, unifiedData, (err, data) => {
    if (err === undefined) {
      console.info(`Succeeded in inserting data. key = ${data}`);
    } else {
      console.error(`Failed to insert data. code is ${err.code},message is ${err.message} `);
    }
  });
  } catch (e) {
    let error: BusinessError = e as BusinessError;
    console.error(`Insert data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.insertData

insertData(options: Options, data: UnifiedData): Promise<string>

将数据写入UDMF的公共数据通路中,并生成数据的唯一标识符,使用Promise异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,仅需要intention的值。
data UnifiedData 目标数据。

返回值:

类型 说明
Promise<string> Promise对象,返回写入UDMF的数据的唯一标识符key的值。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import { BusinessError } from '@ohos.base';

let plainText = new unifiedDataChannel.PlainText();
plainText.textContent = 'hello world!';
let unifiedData = new unifiedDataChannel.UnifiedData(plainText);

let options: unifiedDataChannel.Options = {
  intention: unifiedDataChannel.Intention.DATA_HUB
}
try {
  unifiedDataChannel.insertData(options, unifiedData).then((data) => {
    console.info(`Succeeded in inserting data. key = ${data}`);
  }).catch((err: BusinessError) => {
    console.error(`Failed to insert data. code is ${err.code},message is ${err.message} `);
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Insert data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.updateData

updateData(options: Options, data: UnifiedData, callback: AsyncCallback<void>): void

更新已写入UDMF的公共数据通路的数据,使用callback异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,仅需要key的值。
data UnifiedData 目标数据。
callback AsyncCallback<void> 回调函数。当更新数据成功,err为undefined,否则为错误对象。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import { BusinessError } from '@ohos.base';

let plainText = new unifiedDataChannel.PlainText();
plainText.textContent = 'hello world!';
let unifiedData = new unifiedDataChannel.UnifiedData(plainText);

let options: unifiedDataChannel.Options = {
  key: 'udmf://DataHub/com.ohos.test/0123456789'
};

try {
  unifiedDataChannel.updateData(options, unifiedData, (err) => {
    if (err === undefined) {
      console.info('Succeeded in updating data.');
    } else {
      console.error(`Failed to update data. code is ${err.code},message is ${err.message} `);
    }
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Update data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.updateData

updateData(options: Options, data: UnifiedData): Promise<void>

更新已写入UDMF的公共数据通路的数据,使用Promise异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,仅需要key的值。
data UnifiedData 目标数据。

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import { BusinessError } from '@ohos.base';

let plainText = new unifiedDataChannel.PlainText();
plainText.textContent = 'hello world!';
let unifiedData = new unifiedDataChannel.UnifiedData(plainText);

let options: unifiedDataChannel.Options = {
  key: 'udmf://DataHub/com.ohos.test/0123456789'
};

try {
  unifiedDataChannel.updateData(options, unifiedData).then(() => {
    console.info('Succeeded in updating data.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to update data. code is ${err.code},message is ${err.message} `);
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Update data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.queryData

queryData(options: Options, callback: AsyncCallback<Array<UnifiedData>>): void

查询UDMF公共数据通路的数据,使用callback异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,key和intention均为可选,根据传入的参数做相应的校验以返回不同的值。
callback AsyncCallback<Array<UnifiedData>> 回调函数,返回查询到的所有数据。
如果options中填入的是key,则返回key对应的数据。
如果options中填入的是intention,则返回intention下所有数据。
如intention和key均填写了,取两者查询数据的交集,与options只填入key的获取结果一致;如没有交集报错。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import uniformTypeDescriptor from '@ohos.data.uniformTypeDescriptor';
import { BusinessError } from '@ohos.base';

let options: unifiedDataChannel.Options = {
  intention: unifiedDataChannel.Intention.DATA_HUB
};

try {
  unifiedDataChannel.queryData(options, (err, data) => {
    if (err === undefined) {
      console.info(`Succeeded in querying data. size = ${data.length}`);
      for (let i = 0; i < data.length; i++) {
        let records = data[i].getRecords();
        for (let j = 0; j < records.length; j++) {
          if (records[j].getType() === uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {
            let text = records[j] as unifiedDataChannel.PlainText;
            console.info(`${i + 1}.${text.textContent}`);
          }
        }
      }
    } else {
      console.error(`Failed to query data. code is ${err.code},message is ${err.message} `);
    }
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Query data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.queryData

queryData(options: Options): Promise<Array<UnifiedData>>

查询UDMF公共数据通路的数据,使用Promise异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,key和intention均为可选,根据传入的参数做相应的校验以返回不同的值。

返回值:

类型 说明
Promise<Array<UnifiedData>> Promise对象,返回查询到的所有数据。
如果options中填入的是key,则返回key对应的数据。
如果options中填入的是intention,则返回intention下所有数据。
如intention和key均填写了,取两者查询数据的交集,与options只填入key的获取结果一致;如没有交集报错。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import uniformTypeDescriptor from '@ohos.data.uniformTypeDescriptor';
import { BusinessError } from '@ohos.base';

let options: unifiedDataChannel.Options = {
  key: 'udmf://DataHub/com.ohos.test/0123456789'
};

try {
  unifiedDataChannel.queryData(options).then((data) => {
    console.info(`Succeeded in querying data. size = ${data.length}`);
    for (let i = 0; i < data.length; i++) {
      let records = data[i].getRecords();
      for (let j = 0; j < records.length; j++) {
        if (records[j].getType() === uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {
          let text = records[j] as unifiedDataChannel.PlainText;
          console.info(`${i + 1}.${text.textContent}`);
        }
      }
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to query data. code is ${err.code},message is ${err.message} `);
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Query data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.deleteData

deleteData(options: Options, callback: AsyncCallback<Array<UnifiedData>>): void

删除UDMF公共数据通路的数据,返回删除的数据集,使用callback异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,key和intention均为可选,根据传入的参数做相应的校验以返回不同的值。
callback AsyncCallback<Array<UnifiedData>> 回调函数,返回删除的所有数据。
如果options中填入的是key,则删除key对应的数据并返回该数据。
如果options中填入的是intention,则删除intention下所有数据并返回删除的数据。
如intention和key均填写了,取两者数据的交集进行删除,并返回删除的数据,与options只填入key的结果一致;如没有交集报错。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import uniformTypeDescriptor from '@ohos.data.uniformTypeDescriptor';
import { BusinessError } from '@ohos.base';

let options: unifiedDataChannel.Options = {
  intention: unifiedDataChannel.Intention.DATA_HUB
};

try {
  unifiedDataChannel.deleteData(options, (err, data) => {
    if (err === undefined) {
      console.info(`Succeeded in deleting data. size = ${data.length}`);
      for (let i = 0; i < data.length; i++) {
        let records = data[i].getRecords();
        for (let j = 0; j < records.length; j++) {
          if (records[j].getType() === uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {
            let text = records[j] as unifiedDataChannel.PlainText;
            console.info(`${i + 1}.${text.textContent}`);
          }
        }
      }
    } else {
      console.error(`Failed to delete data. code is ${err.code},message is ${err.message} `);
    }
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Delete data throws an exception. code is ${error.code},message is ${error.message} `);
}

unifiedDataChannel.deleteData

deleteData(options: Options): Promise<Array<UnifiedData>>

删除UDMF公共数据通路的数据,返回删除的数据集,使用Promise异步回调。

系统能力: SystemCapability.DistributedDataManager.UDMF.Core

参数:

参数名 类型 必填 说明
options Options 配置项参数,key和intention均为可选,根据传入的参数做相应的校验以返回不同的值。

返回值:

类型 说明
Promise<Array<UnifiedData>> Promise对象,返回删除的所有数据。
如果options中填入的是key,则删除key对应的数据并返回该数据。
如果options中填入的是intention,则删除intention下所有数据并返回删除的数据。
如intention和key均填写了,取两者数据的交集进行删除,并返回删除的数据,与options只填入key的结果一致;如没有交集报错。

示例:

import unifiedDataChannel from '@ohos.data.unifiedDataChannel';
import uniformTypeDescriptor from '@ohos.data.uniformTypeDescriptor';
import { BusinessError } from '@ohos.base';

let options: unifiedDataChannel.Options = {
  key: 'udmf://DataHub/com.ohos.test/0123456789'
};

try {
  unifiedDataChannel.deleteData(options).then((data) => {
    console.info(`Succeeded in deleting data. size = ${data.length}`);
    for (let i = 0; i < data.length; i++) {
      let records = data[i].getRecords();
      for (let j = 0; j < records.length; j++) {
        if (records[j].getType() === uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {
          let text = records[j] as unifiedDataChannel.PlainText;
          console.info(`${i + 1}.${text.textContent}`);
        }
      }
    }
  }).catch((err: BusinessError) => {
    console.error(`Failed to delete data. code is ${err.code},message is ${err.message} `);
  });
} catch (e) {
  let error: BusinessError = e as BusinessError;
  console.error(`Query data throws an exception. code is ${error.code},message is ${error.message} `);
}