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