HarmonyOS鸿蒙Next服务卡片开发,刷新时如何传递参数

HarmonyOS鸿蒙Next服务卡片开发,刷新时如何传递参数 服务卡片设置了每隔一小时进行刷新,按文档会回调 onUpdateForm(formId: string),我的需求是在回调onUpdateForm调用一个接口,然后根据返回值刷新数据,但是我这个接口需要一个入参标识,比如姓名或者证件号,这些参数该如何保存才能在onUpdateForm内取出来然后传递。

3 回复

可以将数据通过关系型数据库的方式进行持久化,后续可从数据库中获取,参考这个codelab

https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_NEXT-Rdb

更多关于HarmonyOS鸿蒙Next服务卡片开发,刷新时如何传递参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,服务卡片刷新时传递参数可以通过FormBindingDataFormProvider实现。具体步骤如下:

  1. 定义参数:首先在服务卡片的config.json中定义需要传递的参数。
  2. 创建FormBindingData:在刷新时,创建FormBindingData对象,并将需要传递的参数放入其中。
  3. 更新卡片:通过FormProviderupdateForm方法,将FormBindingData传递给服务卡片。

示例代码如下:

import formBindingData from '@ohos.application.formBindingData';
import formProvider from '@ohos.application.formProvider';

// 创建FormBindingData对象
let obj = {
    "key": "value"
};
let jsonObj = JSON.stringify(obj);
let formData = formBindingData.createFormBindingData(jsonObj);

// 更新服务卡片
let formId = '123456'; // 替换为实际的服务卡片ID
formProvider.updateForm(formId, formData).then(() => {
    console.log('服务卡片更新成功');
}).catch((err) => {
    console.error('服务卡片更新失败', err);
});

通过这种方式,可以在服务卡片刷新时传递参数。

在HarmonyOS鸿蒙Next中,服务卡片的刷新可以通过FormProviderupdateForm方法来触发。要传递参数,可以在调用updateForm时,通过FormBindingData对象将参数封装为键值对。例如:

let formData = {
    "key1": "value1",
    "key2": "value2"
};
let formBindingData = new FormBindingData(formData);
FormProvider.updateForm(formId, formBindingData, (error) => {
    if (error) {
        console.error('Failed to update form. Cause: ' + error);
    } else {
        console.info('Form updated successfully.');
    }
});

在服务卡片的onUpdateForm生命周期中,可以通过FormBindingData对象获取这些参数。

回到顶部