HarmonyOS 应用卡片如何管理

如何获取应用已加桌的卡片属性(id,尺寸…等)

在进行文档查阅及本地研发测试后,发现打开卡片列表(应用图标长按->服务卡片),才会触发FormExtensionAbility的onAddForm,可以在这里面获取到应用所有卡片及属性。说明每次打开卡片列表都会重新创建新的卡片,这样的话加入一个用户多次打开了卡片列表就会创建N多个卡片,假如这些创建的卡片都没有加桌,那么这些卡片id都是无用的,因为查阅文档没有找到卡片加桌的回调! 现在我们的需求是希望能通过系统push和应用本身去对卡片进行刷新,这些刷新都需要必要参数formId,所以如果我们在onAddForm回调中对卡片进行本地持久化以及向服务器传输创建的卡片信息进行之后的刷新操作,那么向上面所说本地和服务器就会存在一堆无效卡片(创建但没有加桌),我们也无法区分,那么每次更新卡片的时候就会把之前所有存储的卡片都要进行通知,我觉得这样很不对

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

1、onAddForm回调事件中可以从want的parameters中通过key为ohos.extra.param.key.form_temporary获取当前卡片是否为临时卡片,还可以通过其他key值获取其他属性,

具体可参考FormParam文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-form-forminfo-V5

生命周期文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-form-formextensionability-V5

onAddForm(want: Want) {
  Logger.info(Const.TAG, 'xxx: enter onAddForm want:' + JSON.stringify(want));
  let parameters = want.parameters;
  if (parameters) {
    // 获取当前卡片是否为临时卡片
    let flag: boolean = parameters['ohos.extra.param.key.form_temporary'] as boolean;
  }
  // Called to return a FormBindingData object.
  let formData = formBindingData.createFormBindingData('');
  return formData;
}

2、临时卡片转常态卡片时会触发onCastToNormalForm(formId: string)回调,可以在这里面将对应formId重新标记为常态卡片

分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS Account账号管理应用场景
122浏览 • 1回复 待解决
鸿蒙卡片如何去掉应用的桌面图标
11621浏览 • 3回复 已解决
卡片服务功能支持应用内部使用吗?
7567浏览 • 1回复 待解决
应用市场推荐展示元服务卡片异常
1955浏览 • 1回复 待解决