• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.form.FormExtensionAbility (FormExtensionAbility)
2
3FormExtensionAbility为卡片扩展模块,提供卡片创建、销毁、刷新等生命周期回调。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 如下模块不支持在FormExtensionAbility引用,可能会导致程序异常退出。
10> - @ohos.ability.particleAbility (ParticleAbility模块)
11> - @ohos.multimedia.audio (音频管理)
12> - @ohos.multimedia.camera (相机管理)
13> - @ohos.multimedia.media (媒体服务)
14> - @ohos.resourceschedule.backgroundTaskManager (后台任务管理)
15
16## 导入模块
17
18```ts
19import { FormExtensionAbility } from '@kit.FormKit';
20```
21
22## FormExtensionAbility
23
24卡片扩展类。包含卡片提供方接收创建卡片、修改可见性等的通知接口。
25
26**模型约束:** 此接口仅可在Stage模型下使用。
27
28**系统能力:** SystemCapability.Ability.Form
29
30### 属性
31
32**模型约束:** 此接口仅可在Stage模型下使用。
33
34**系统能力:** SystemCapability.Ability.Form
35
36| 名称    | 类型                                                         | 可读 | 可写 | 说明                                                         |
37| ------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
38| context | [FormExtensionContext](js-apis-inner-application-formExtensionContext.md) | 是   | 否   | FormExtensionAbility的上下文环境,继承自[ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
39
40### FormExtensionAbility.onAddForm
41
42onAddForm(want: Want): formBindingData.FormBindingData
43
44卡片提供方接收创建卡片的通知接口。
45
46**模型约束:** 此接口仅可在Stage模型下使用。
47
48**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
49
50**系统能力:** SystemCapability.Ability.Form
51
52**参数:**
53
54| 参数名 | 类型                                   | 必填 | 说明                                                         |
55| ------ | -------------------------------------- | ---- | ------------------------------------------------------------ |
56| want   | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 当前卡片相关的Want类型信息,包括卡片ID、卡片名称、卡片样式等。这些卡片信息必须作为持久数据进行管理,以便后续更新和删除卡片。 |
57
58**返回值:**
59
60| 类型                                                         | 说明                                                        |
61| ------------------------------------------------------------ | ----------------------------------------------------------- |
62| [formBindingData.FormBindingData](js-apis-app-form-formBindingData.md#formbindingdata) | formBindingData.FormBindingData对象,卡片要显示的数据。 |
63
64**示例:**
65
66```ts
67import { formBindingData, FormExtensionAbility } from '@kit.FormKit';
68import { Want } from '@kit.AbilityKit';
69
70export default class MyFormExtensionAbility extends FormExtensionAbility {
71  onAddForm(want: Want) {
72    console.log(`FormExtensionAbility onAddForm, want: ${want.abilityName}`);
73    let dataObj1: Record<string, string> = {
74      'temperature': '11c',
75      'time': '11:00'
76    };
77
78    let obj1: formBindingData.FormBindingData = formBindingData.createFormBindingData(dataObj1);
79    return obj1;
80  }
81}
82```
83
84### FormExtensionAbility.onCastToNormalForm
85
86onCastToNormalForm(formId: string): void
87
88卡片提供方接收临时卡片转常态卡片的通知接口。
89
90**模型约束:** 此接口仅可在Stage模型下使用。
91
92**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
93
94**系统能力:** SystemCapability.Ability.Form
95
96**参数:**
97
98| 参数名 | 类型   | 必填 | 说明                     |
99| ------ | ------ | ---- | ------------------------ |
100| formId | string | 是   | 请求转换为常态的卡片标识。 |
101
102**示例:**
103
104```ts
105import { FormExtensionAbility } from '@kit.FormKit';
106
107export default class MyFormExtensionAbility extends FormExtensionAbility {
108  onCastToNormalForm(formId: string) {
109    console.log(`FormExtensionAbility onCastToNormalForm, formId: ${formId}`);
110  }
111};
112```
113
114### FormExtensionAbility.onUpdateForm
115
116onUpdateForm(formId: string, wantParams?: Record<string, Object>): void
117
118卡片提供方接收携带参数的更新卡片的通知接口。获取最新数据后调用formProvider的[updateForm](js-apis-app-form-formProvider.md#updateform)接口刷新卡片数据。
119
120**模型约束:** 此接口仅可在Stage模型下使用。
121
122**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
123
124**系统能力:** SystemCapability.Ability.Form
125
126**参数:**
127
128| 参数名 | 类型   | 必填 | 说明               |
129| ------ | ------ | ---- | ------------------ |
130| formId | string | 是   | 请求更新的卡片ID。 |
131| wantParams<sup>12+</sup> | Record<string, Object> | 否   | 更新参数。 |
132
133**示例:**
134
135```ts
136import { formBindingData, FormExtensionAbility, formProvider } from '@kit.FormKit';
137import { BusinessError } from '@kit.BasicServicesKit';
138
139export default class MyFormExtensionAbility extends FormExtensionAbility {
140  onUpdateForm(formId: string, wantParams?: Record<string, Object>) {
141    console.log(`FormExtensionAbility onUpdateForm, formId: ${formId},
142        wantPara: ${wantParams?.['ohos.extra.param.key.host_bg_inverse_color']}`);
143    let param: Record<string, string> = {
144      'temperature': '22c',
145      'time': '22:00'
146    }
147    let obj2: formBindingData.FormBindingData = formBindingData.createFormBindingData(param);
148    formProvider.updateForm(formId, obj2).then(() => {
149      console.log(`FormExtensionAbility context updateForm`);
150    }).catch((error: BusinessError) => {
151      console.error(`FormExtensionAbility context updateForm failed, data: ${error}`);
152    });
153  }
154};
155```
156
157### FormExtensionAbility.onChangeFormVisibility
158
159onChangeFormVisibility(newStatus: Record\<string, number>): void
160
161卡片提供方接收修改可见性的通知接口。
162该接口仅对系统应用生效,且需要将formVisibleNotify配置为true。
163
164**模型约束:** 此接口仅可在Stage模型下使用。
165
166**系统能力:** SystemCapability.Ability.Form
167
168**参数:**
169
170| 参数名  | 类型   | 必填 | 说明                   |
171| ------- | ------ | ---- | ---------------------- |
172| newStatus  | Record\<string, number> | 是   | 请求修改的卡片标识和可见状态。 |
173
174**示例:**
175
176```ts
177import { formBindingData, FormExtensionAbility, formProvider } from '@kit.FormKit';
178import { BusinessError } from '@kit.BasicServicesKit';
179
180// ArkTS规范中ets文件无法使用Object.keysfor..in...获取Object的key值,请使用自定义函数getObjKeys代替。
181// 使用时请将此函数单独抽离至一个ts文件中并导出,在需要用到的ets文件中导入此函数后使用。
182function getObjKeys(obj: Object): string[] {
183  let keys = Object.keys(obj);
184  return keys;
185}
186
187export default class MyFormExtensionAbility extends FormExtensionAbility {
188  onChangeFormVisibility(newStatus: Record<string, number>) {
189    console.log(`FormExtensionAbility onChangeFormVisibility, newStatus: ${newStatus}`);
190    let param: Record<string, string> = {
191      'temperature': '22c',
192      'time': '22:00'
193    }
194    let obj2: formBindingData.FormBindingData = formBindingData.createFormBindingData(param);
195
196    let keys: string[] = getObjKeys(newStatus);
197
198    for (let i: number = 0; i < keys.length; i++) {
199      console.log(`FormExtensionAbility onChangeFormVisibility, key: ${keys[i]}, value= ${newStatus[keys[i]]}`);
200      formProvider.updateForm(keys[i], obj2).then(() => {
201        console.log(`FormExtensionAbility context updateForm`);
202      }).catch((error: BusinessError) => {
203        console.error(`Operation updateForm failed. Cause: ${JSON.stringify(error)}`);
204      });
205    }
206  }
207};
208```
209
210### FormExtensionAbility.onFormEvent
211
212onFormEvent(formId: string, message: string): void
213
214卡片提供方接收处理卡片事件的通知接口。
215
216**模型约束:** 此接口仅可在Stage模型下使用。
217
218**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
219
220**系统能力:** SystemCapability.Ability.Form
221
222**参数:**
223
224| 参数名  | 类型   | 必填 | 说明                   |
225| ------- | ------ | ---- | ---------------------- |
226| formId  | string | 是   | 请求触发事件的卡片标识。 |
227| message | string | 是   | 事件消息。             |
228
229**示例:**
230
231```ts
232import { FormExtensionAbility } from '@kit.FormKit';
233
234export default class MyFormExtensionAbility extends FormExtensionAbility {
235  onFormEvent(formId: string, message: string) {
236    console.log(`FormExtensionAbility onFormEvent, formId: ${formId}, message: ${message}`);
237  }
238};
239```
240
241### FormExtensionAbility.onRemoveForm
242
243onRemoveForm(formId: string): void
244
245卡片提供方接收销毁卡片的通知接口。
246
247**模型约束:** 此接口仅可在Stage模型下使用。
248
249**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
250
251**系统能力:** SystemCapability.Ability.Form
252
253**参数:**
254
255| 参数名 | 类型   | 必填 | 说明               |
256| ------ | ------ | ---- | ------------------ |
257| formId | string | 是   | 请求销毁的卡片标识。 |
258
259**示例:**
260
261```ts
262import { FormExtensionAbility } from '@kit.FormKit';
263
264export default class MyFormExtensionAbility extends FormExtensionAbility {
265  onRemoveForm(formId: string) {
266    console.log(`FormExtensionAbility onRemoveForm, formId: ${formId}`);
267  }
268};
269```
270
271### FormExtensionAbility.onConfigurationUpdate
272
273onConfigurationUpdate(newConfig: Configuration): void
274
275当系统配置更新时调用。
276仅当前formExtensionAbility存活时更新配置才会触发此生命周期。需要注意:formExtensionAbility创建后10秒内无操作将会被清理。
277
278**模型约束:** 此接口仅可在Stage模型下使用。
279
280**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
281
282**系统能力:** SystemCapability.Ability.Form
283
284**参数:**
285
286| 参数名 | 类型 | 必填 | 说明 |
287| -------- | -------- | -------- | -------- |
288| newConfig | [Configuration](../apis-ability-kit/js-apis-app-ability-configuration.md) | 是 | 表示需要更新的配置信息。 |
289
290**示例:**
291
292```ts
293import { FormExtensionAbility } from '@kit.FormKit';
294import { Configuration } from '@kit.AbilityKit';
295
296export default class MyFormExtensionAbility extends FormExtensionAbility {
297  onConfigurationUpdate(newConfig: Configuration) {
298    // 仅当前formExtensionAbility存活时更新配置才会触发此生命周期。
299    // 需要注意:formExtensionAbility创建后10秒内无操作将会被清理。
300    console.log(`onConfigurationUpdate, config: ${JSON.stringify(newConfig)}`);
301  }
302};
303```
304
305### FormExtensionAbility.onAcquireFormState
306
307onAcquireFormState?(want: Want): formInfo.FormState
308
309卡片提供方接收查询卡片状态通知接口,默认返回卡片初始状态(该方法可以选择性重写)。
310
311**模型约束:** 此接口仅可在Stage模型下使用。
312
313**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
314
315**系统能力:** SystemCapability.Ability.Form
316
317**参数:**
318
319| 参数名 | 类型 | 必填 | 说明 |
320| -------- | -------- | -------- | -------- |
321| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | want表示获取卡片状态的描述。描述包括Bundle名称、能力名称、模块名称、卡片名和卡片维度。 |
322
323**示例:**
324
325```ts
326import { FormExtensionAbility, formInfo } from '@kit.FormKit';
327import { Want } from '@kit.AbilityKit';
328
329export default class MyFormExtensionAbility extends FormExtensionAbility {
330  onAcquireFormState(want: Want) {
331    console.log(`FormExtensionAbility onAcquireFormState, want: ${want}`);
332    return formInfo.FormState.UNKNOWN;
333  }
334};
335```
336
337### FormExtensionAbility.onStop<sup>12+</sup>
338
339onStop?(): void
340
341当卡片提供方的卡片进程退出时,触发该回调。
342
343**模型约束:** 此接口仅可在Stage模型下使用。
344
345**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
346
347**系统能力:** SystemCapability.Ability.Form
348
349**示例:**
350
351```ts
352import { FormExtensionAbility } from '@kit.FormKit';
353
354export default class MyFormExtensionAbility extends FormExtensionAbility {
355  onStop() {
356    console.log(`FormExtensionAbility onStop`);
357  }
358}
359```
360