HarmonyOS 鸿蒙Next如何在 ExtensionAbility 中访问主应用的数据

HarmonyOS 鸿蒙Next如何在 ExtensionAbility 中访问主应用的数据 如何在 ExtensionAbility 中访问主应用的数据?

我要开发一个来电显示功能,使用到了 CallerInfoQueryExtensionAbility 扩展,我在主应用中将号码和名称存储起来,然后在 ExtensionAbility 中访问对应的内容。

1 回复

更多关于HarmonyOS 鸿蒙Next如何在 ExtensionAbility 中访问主应用的数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,ExtensionAbility 是一种独立运行的组件,通常用于扩展应用的功能。为了在 ExtensionAbility 中访问主应用的数据,可以通过 DataShare 机制实现。DataShare 是鸿蒙提供的一种数据共享机制,允许应用之间或应用内部不同组件之间共享数据。

首先,主应用需要将数据通过 DataShare 进行共享。可以使用 DataShareHelper 来创建和操作共享数据。例如,主应用可以在 onCreate 方法中初始化 DataShareHelper,并将数据插入到共享数据表中。

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

let dataShareHelper;
const uri = "datashare://com.example.myapp/userdata";

onCreate() {
    dataShare.createDataShareHelper(this.context, uri, (err, helper) => {
        if (err) {
            console.error('Failed to create DataShareHelper');
            return;
        }
        dataShareHelper = helper;
        // 插入数据到共享表
        dataShareHelper.insert(uri, { name: 'John', age: 30 }, (err, result) => {
            if (err) {
                console.error('Failed to insert data');
            }
        });
    });
}

ExtensionAbility 中,同样可以使用 DataShareHelper 来访问主应用共享的数据。通过指定相同的 URI,ExtensionAbility 可以查询或修改共享数据。

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

let dataShareHelper;
const uri = "datashare://com.example.myapp/userdata";

onCreate() {
    dataShare.createDataShareHelper(this.context, uri, (err, helper) => {
        if (err) {
            console.error('Failed to create DataShareHelper');
            return;
        }
        dataShareHelper = helper;
        // 查询共享数据
        dataShareHelper.query(uri, { columns: ['name', 'age'] }, (err, resultSet) => {
            if (err) {
                console.error('Failed to query data');
                return;
            }
            // 处理查询结果
            while (resultSet.goToNextRow()) {
                let name = resultSet.getString(resultSet.getColumnIndex('name'));
                let age = resultSet.getInt(resultSet.getColumnIndex('age'));
                console.log(`Name: ${name}, Age: ${age}`);
            }
        });
    });
}

通过这种方式,ExtensionAbility 可以访问主应用通过 DataShare 共享的数据。

回到顶部