HarmonyOS 应用卡片如何管理?

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

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

阅读 612
1 个回答

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重新标记为常态卡片

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进