# AccessibilityExtensionContext (System API)
The **AccessibilityExtensionContext** module, inherited from **ExtensionContext**, provides context for **AccessibilityExtensionAbility**.
You can use the APIs of this module to configure the concerned information, obtain root information, and inject gestures.
> **NOTE**
>
> - The initial APIs of this module are supported since API version 12. Newly added APIs will be marked with a superscript to indicate their earliest API version.
> - The current page contains only the system APIs of the current module. For details about other public APIs, see [AccessibilityExtensionContext](js-apis-inner-application-accessibilityExtensionContext.md).
## Instructions
Before using the **AccessibilityExtensionContext** module, you must define a child class that inherits from **AccessibilityExtensionAbility**.
```ts
import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit';
class EntryAbility extends AccessibilityExtensionAbility {
onConnect(): void {
let axContext = this.context;
}
}
```
### enableScreenCurtain12+
enableScreenCurtain(isEnable: boolean): void;
Enables or disables the screen curtain.
**System capability**: SystemCapability.BarrierFree.Accessibility.Core
**Parameters**
| Name | Type | Mandatory | Description |
| ----------- | ---------------------------------------- | ---- | -------------- |
| isEnable | boolean | Yes | **true** indicates enabled; **false** indicates disabled.|
**Error codes**
For details about the error codes, see [Accessibility Error Codes](errorcode-accessibility.md).
| ID | Error Message |
| ------- | ---------------------------------------- |
| 202 | Permission verification failed. A non-system application calls a system API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
| 9300003 | No accessibility permission to perform the operation. |
**Example**
```ts
import { AccessibilityElement } from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let rootElement: AccessibilityElement;
axContext.getWindowRootElement().then((data: AccessibilityElement) => {
rootElement = data;
console.log(`Succeeded in get root element of the window, ${JSON.stringify(data)}`);
await rootElement.enableScreenCurtain(true);
console.log(`Succeeded in enableScreenCurtain}`);
}).catch((err: BusinessError) => {
console.error(`failed to enableScreenCurtain, Code is ${err.code}, message is ${err.message}`);
});
```
### findElement('elementId')12+
findElement(type: 'elementId', condition: number): Promise\;
Queries the node elements in the current active window based on the **elementId**. This API uses a promise to return the result.
**System capability**: SystemCapability.BarrierFree.Accessibility.Core
**Parameters**
| Name | Type | Mandatory | Description |
| --------- | --------------------------------- | ---- | ---------------------------------------- |
| type | string | Yes | Type of element finding. The value is fixed at **'elementId'**.|
| condition | number | Yes | **elementId** of the node element. |
**Return value**
| Type | Description |
| ----------------------------------- | -------------------------------- |
| Promise<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)> | Promise used to return the result.|
**Error codes**
For details about the error codes, see [Accessibility Error Codes](errorcode-accessibility.md).
| ID | Error Message |
| ------- | ----------------------------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**Example**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// elementId is 10.
let condition = 10;
// rootElement is an instance of AccessibilityElement.
rootElement.findElement('elementId', condition).then((data: AccessibilityElement) => {
console.log(`Succeeded in find element, ${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`);
});
```
### findElement('textType')12+
findElement(type: 'textType', condition: string): Promise\>;
Queries all node elements based on the **accessibilityTextHint** text type configured for a node. This API uses a promise to return the result.
**System capability**: SystemCapability.BarrierFree.Accessibility.Core
**Parameters**
| Name | Type | Mandatory | Description |
| --------- | ------ | ---- | ----------------------------- |
| type | string | Yes | Type of element finding. The value is fixed at **'textType'**.|
| condition | string | Yes | Search criteria. |
**Return value**
| Type | Description |
| ---------------------------------------- | ----------------------------- |
| Promise<Array<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)>> | Promise used to return the result.|
**Error codes**
For details about the error codes, see [Accessibility Error Codes](errorcode-accessibility.md).
| ID | Error Message |
| ------- | ----------------------------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**Example**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// The content of condition must be the same as the type value in the accessibilityTextHint attribute of the target component.
let condition = 'location';
// rootElement is an instance of AccessibilityElement.
rootElement.findElement('textType', condition).then((data: AccessibilityElement[]) => {
console.log(`Succeeded in find element, ${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`);
});
```
### getCursorPosition12+
getCursorPosition(): Promise\;
Obtains the cursor position in the **Text** component. This API uses a promise to return the result.
**System capability**: SystemCapability.BarrierFree.Accessibility.Core
**Return value**
| Type | Description |
| ------------------- | ---------------- |
| Promise<number> | Promise used to return the result.|
**Example**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// rootElement is an instance of AccessibilityElement.
rootElement.getCursorPosition().then((data: number) => {
console.info(`Succeeded in getCursorPosition, ${data}`);
}).catch((err: BusinessError) => {
console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`);
});
```
### getCursorPosition12+
getCursorPosition(callback: AsyncCallback\): void;
Obtains the cursor position in the **Text** component. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.BarrierFree.Accessibility.Core
**Parameters**
| Name | Type | Mandatory | Description |
| ----------- | ---------------------------------------- | ---- | -------------- |
| callback | AsyncCallback<number> | Yes | Callback function used to return the result.|
**Example**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// rootElement is an instance of AccessibilityElement.
rootElement.getCursorPosition((err: BusinessError, data: number) => {
if (err && err.code) {
console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`);
return;
}
console.info(`Succeeded in getCursorPosition, ${data}`);
});
```
### startAbility12+
startAbility(want: Want): void;
Starts the foreground page.
**System capability**: SystemCapability.BarrierFree.Accessibility.Core
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| want | [Want](../../reference/apis-ability-kit/js-apis-app-ability-want.md) | Yes| Want information about the target ability, such as the ability name and bundle name.|
**Error codes**
For details about the error codes, see [Accessibility Error Codes](errorcode-accessibility.md).
| ID | Error Message |
| ------- | ---------------------------------------- |
| 201 | Permission denied. Interface caller does not have permission. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**Example**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let want: Want = {
bundleName: 'com.huawei.hmos.photos'
abilityName: 'com.huawei.hmos.photos.MainAbility'
}
axContext.startAbility(want).then(() => {
console.info(`startAbility Succeeded enable ability`);
}).catch((err: BusinessError) => {
console.error(`startAbility failed to enable ability, Code is ${err.code}, message is ${err.message}`);
});
```