• 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-application-want.md) | 是   | 当前ExtensionAbility相关的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';
49
50export default class MyFormExtensionAbility extends FormExtensionAbility {
51  onAddForm(want) {
52    console.log('FormExtensionAbility onAddForm, want:' + want.abilityName);
53    let dataObj1 = {
54      temperature:'11c',
55      'time':'11:00'
56    };
57    let obj1 = formBindingData.createFormBindingData(dataObj1);
58    return obj1;
59  }
60}
61```
62
63## onCastToNormalForm
64
65onCastToNormalForm(formId: string): void
66
67卡片提供方接收临时卡片转常态卡片的通知接口。
68
69**系统能力**:SystemCapability.Ability.Form
70
71**参数:**
72
73| 参数名 | 类型   | 必填 | 说明                     |
74| ------ | ------ | ---- | ------------------------ |
75| formId | string | 是   | 请求转换为常态的卡片标识。 |
76
77**示例:**
78
79```ts
80export default class MyFormExtensionAbility extends FormExtensionAbility {
81  onCastToNormalForm(formId) {
82    console.log('FormExtensionAbility onCastToNormalForm, formId:' + formId);
83  }
84}
85```
86
87## onUpdateForm
88
89onUpdateForm(formId: string): void
90
91卡片提供方接收更新卡片的通知接口。获取最新数据后调用[FormExtensionContext](js-apis-inner-application-formExtensionContext.md)的updateForm接口刷新卡片数据。
92
93**系统能力**:SystemCapability.Ability.Form
94
95**参数:**
96
97| 参数名 | 类型   | 必填 | 说明               |
98| ------ | ------ | ---- | ------------------ |
99| formId | string | 是   | 请求更新的卡片ID。 |
100
101**示例:**
102
103```ts
104import formBindingData from '@ohos.app.form.formBindingData';
105export default class MyFormExtensionAbility extends FormExtensionAbility {
106  onUpdateForm(formId) {
107    console.log('FormExtensionAbility onUpdateForm, formId:' + formId);
108    let obj2 = formBindingData.createFormBindingData({temperature:'22c', time:'22:00'});
109    this.context.updateForm(formId, obj2).then((data)=>{
110      console.log('FormExtensionAbility context updateForm, data:' + data);
111    }).catch((error) => {
112      console.error('Operation updateForm failed. Cause: ' + error);});
113    }
114}
115```
116
117## onChangeFormVisibility
118
119onChangeFormVisibility(newStatus: { [key: string]: number }): void
120
121卡片提供方接收修改可见性的通知接口。
122
123**系统能力**:SystemCapability.Ability.Form
124
125**参数:**
126
127| 参数名    | 类型                      | 必填 | 说明                         |
128| --------- | ------------------------- | ---- | ---------------------------- |
129| newStatus | { [key: string]: number } | 是   | 请求修改的卡片标识和可见状态。 |
130
131**示例:**
132
133```ts
134import formBindingData from '@ohos.app.form.formBindingData';
135export default class MyFormExtensionAbility extends FormExtensionAbility {
136  onChangeFormVisibility(newStatus) {
137  console.log('FormExtensionAbility onChangeFormVisibility, newStatus:' + newStatus);
138  let obj2 = formBindingData.createFormBindingData({temperature:'22c', time:'22:00'});
139
140  for (let key in newStatus) {
141    console.log('FormExtensionAbility onChangeFormVisibility, key:' + key + ', value=' + newStatus[key]);
142    this.context.updateForm(key, obj2).then((data)=>{
143        console.log('FormExtensionAbility context updateForm, data:' + data);
144    }).catch((error) => {
145        console.error('Operation updateForm failed. Cause: ' + error);});
146    }
147  }
148}
149```
150
151## onFormEvent
152
153onFormEvent(formId: string, message: string): void
154
155卡片提供方接收处理卡片事件的通知接口。
156
157**系统能力**:SystemCapability.Ability.Form
158
159**参数:**
160
161| 参数名  | 类型   | 必填 | 说明                   |
162| ------- | ------ | ---- | ---------------------- |
163| formId  | string | 是   | 请求触发事件的卡片标识。 |
164| message | string | 是   | 事件消息。             |
165
166**示例:**
167
168```ts
169export default class MyFormExtension extends FormExtensionAbility {
170  onFormEvent(formId, message) {
171    console.log('FormExtensionAbility onFormEvent, formId:' + formId + ', message:' + message);
172  }
173}
174```
175
176## onRemoveForm
177
178onRemoveForm(formId: string): void
179
180卡片提供方接收销毁卡片的通知接口。
181
182**系统能力**:SystemCapability.Ability.Form
183
184**参数:**
185
186| 参数名 | 类型   | 必填 | 说明               |
187| ------ | ------ | ---- | ------------------ |
188| formId | string | 是   | 请求销毁的卡片标识。 |
189
190**示例:**
191
192```ts
193export default class MyFormExtensionAbility extends FormExtensionAbility {
194  onRemoveForm(formId) {
195    console.log('FormExtensionAbility onRemoveForm, formId:' + formId);
196  }
197}
198```
199
200## onConfigurationUpdate
201
202onConfigurationUpdate(newConfig: Configuration): void;
203
204当系统配置更新时调用。
205
206**系统能力**:SystemCapability.Ability.Form
207
208**参数:**
209
210| 参数名 | 类型 | 必填 | 说明 |
211| -------- | -------- | -------- | -------- |
212| newConfig | [Configuration](js-apis-application-configuration.md) | 是 | 表示需要更新的配置信息。 |
213
214**示例:**
215
216```ts
217class MyFormExtensionAbility extends FormExtensionAbility {
218  onConfigurationUpdate(config) {
219    console.log('onConfigurationUpdate, config:' + JSON.stringify(config));
220  }
221}
222```
223
224## onAcquireFormState
225
226onAcquireFormState?(want: Want): formInfo.FormState;
227
228卡片提供方接收查询卡片状态通知接口。默认返回卡片初始状态。
229
230**系统能力**:SystemCapability.Ability.Form
231
232**参数:**
233
234| 参数名 | 类型 | 必填 | 说明 |
235| -------- | -------- | -------- | -------- |
236| want | [Want](js-apis-application-want.md) | 是 | want表示获取卡片状态的描述。描述包括包名称、能力名称、模块名称、卡片名和卡片维度。 |
237
238**示例:**
239
240```ts
241import formInfo from '@ohos.app.form.formInfo';
242class MyFormExtensionAbility extends FormExtensionAbility {
243  onAcquireFormState(want) {
244    console.log('FormExtensionAbility onAcquireFormState, want:' + want);
245    return formInfo.FormState.UNKNOWN;
246  }
247}
248```
249
250## onShareForm
251
252onShareForm?(formId: string): { [key: string]: Object }
253
254卡片提供方接收卡片分享的通知接口。
255
256**系统接口**: 此接口为系统接口。
257
258**系统能力**:SystemCapability.Ability.Form
259
260**参数:**
261
262| 参数名 | 类型 | 必填 | 说明 |
263| -------- | -------- | -------- | -------- |
264| formId | string | 是   | 卡片标识。 |
265
266**返回值:**
267
268| 类型                                                         | 说明                                                        |
269| ------------------------------------------------------------ | ----------------------------------------------------------- |
270| {[key: string]: any} | 卡片要分享的数据,由开发者自行决定传入的键值对。 |
271
272**示例:**
273
274```ts
275class MyFormExtensionAbility extends FormExtensionAbility {
276  onShareForm(formId) {
277    console.log('FormExtensionAbility onShareForm, formId:' + formId);
278    let wantParams = {
279      'temperature':'20',
280      'time':'2022-8-8 09:59',
281    };
282    return wantParams;
283  }
284}
285```