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```