1# ExtensionContext 2<!--Kit: Ability Kit--> 3<!--Subsystem: Ability--> 4<!--Owner: @yewei0794--> 5<!--Designer: @jsjzju--> 6<!--Tester: @lixueqing513--> 7<!--Adviser: @huipeizi--> 8 9The ExtensionContext module implements the context for ExtensionAbilities. It inherits from Context. 10 11This module provides APIs for accessing resources of a specific ExtensionAbility. An ExtensionAbility can use the context directly provided by ExtensionContext or that extended from ExtensionContext. 12 13> **NOTE** 14> 15> - The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. 16> - The APIs of this module can be used only in the stage model. 17 18## Modules to Import 19 20```ts 21import { common } from '@kit.AbilityKit'; 22``` 23 24## Attributes 25 26**Atomic service API**: This API can be used in atomic services since API version 11. 27 28**System capability**: SystemCapability.Ability.AbilityRuntime.Core 29 30| Name| Type| Read-Only| Optional| Description| 31| -------- | -------- | -------- | -------- | -------- | 32| currentHapModuleInfo | [HapModuleInfo](js-apis-bundleManager-hapModuleInfo.md) | No| No| Information about the HAP file.<br>(See **api\bundle\hapModuleInfo.d.ts** in the **SDK** directory.) | 33| config | [Configuration](js-apis-app-ability-configuration.md) | No| No| Module configuration information.<br>(See **api\@ohos.app.ability.Configuration.d.ts** in the **SDK** directory.)| 34| extensionAbilityInfo | [ExtensionAbilityInfo](js-apis-bundleManager-extensionAbilityInfo.md) | No| No| ExtensionAbility information.<br>(See **api\bundle\extensionAbilityInfo.d.ts** in the **SDK** directory.)| 35 36## When to Use 37ExtensionContext provides information about an ExtensionAbility, module, and HAP file. You can use the information based on service requirements. 38 39**Example** 40 41```ts 42// Singleton object GlobalContext.ts 43export class GlobalContext { 44 private static instance: GlobalContext; 45 private _objects = new Map<string, Object>(); 46 47 private constructor() { 48 } 49 50 public static getContext(): GlobalContext { 51 if (!GlobalContext.instance) { 52 GlobalContext.instance = new GlobalContext(); 53 } 54 return GlobalContext.instance; 55 } 56 57 getObject(value: string): Object | undefined { 58 return this._objects.get(value); 59 } 60 61 setObject(key: string, objectClass: Object): void { 62 this._objects.set(key, objectClass); 63 } 64} 65``` 66 67```ts 68import { FormExtensionAbility, formBindingData } from '@kit.FormKit'; 69import { Want } from '@kit.AbilityKit'; 70import { GlobalContext } from '../GlobalContext'; 71 72export default class MyFormExtensionAbility extends FormExtensionAbility { 73 onAddForm(want: Want) { 74 console.info(`FormExtensionAbility onAddForm, want: ${want.abilityName}`); 75 let dataObj1: Record<string, string> = { 76 'temperature': '11c', 77 'time': '11:00' 78 }; 79 GlobalContext.getContext().setObject("ExtensionContext", this.context); 80 let obj1: formBindingData.FormBindingData = formBindingData.createFormBindingData(dataObj1); 81 return obj1; 82 } 83}; 84``` 85