# AccessibilityExtensionContext (辅助功能扩展上下文)(系统接口)
AccessibilityExtensionContext是AccessibilityExtensionAbility上下文环境,继承自ExtensionContext。
辅助功能扩展上下文模块提供辅助功能扩展的上下文环境的能力,包括允许配置辅助应用关注信息类型、查询节点信息、手势注入等。
> **说明:**
>
> - 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 当前页面仅包含本模块的系统接口,其他公开接口请参[AccessibilityExtensionContext (辅助功能扩展上下文)](js-apis-inner-application-accessibilityExtensionContext.md)。
## 使用说明
在使用AccessibilityExtensionContext的功能前,需要通过AccessibilityExtensionAbility子类实例获取AccessibilityExtensionContex的实例。
```ts
import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit';
class EntryAbility extends AccessibilityExtensionAbility {
onConnect(): void {
let axContext = this.context;
}
}
```
### enableScreenCurtain12+
enableScreenCurtain(isEnable: boolean): void;
提供开启/关闭幕帘屏的能力。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | ---------------------------------------- | ---- | -------------- |
| isEnable | boolean | 是 | true表示打开幕帘屏功能,false表示关闭幕帘屏功能。|
**错误码:**
以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。
| 错误码ID | 错误信息 |
| ------- | ---------------------------------------- |
| 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. |
**示例:**
```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\;
根据elementId查询当前活动窗口下的节点元素,使用Promise异步回调。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------------- | ---- | ---------------------------------------- |
| type | string | 是 | 固定为'elementId', 表示根据elementId查询当前活动窗口下的节点元素。 |
| condition | number | 是 | 表示要查询的节点元素的elementId。 |
**返回值:**
| 类型 | 说明 |
| ----------------------------------- | -------------------------------- |
| Promise<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)> | Promise对象,返回满足指定查询条件的节点元素。 |
**错误码:**
以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
//elementId为10
let condition = 10;
// rootElement是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\>;
根据节点配置的accessibilityTextHint无障碍文本类型查询所有节点元素,使用Promise异步回调。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ----------------------------- |
| type | string | 是 | 固定为'textType', 表示根据文本类型查找节点元素。 |
| condition | string | 是 | 表示查找的条件。 |
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ----------------------------- |
| Promise<Array<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)>> | Promise对象,返回满足指定查询关键字的所有节点元素。 |
**错误码:**
以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。
| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// condition的内容需要与目标组件accessibilityTextHint属性的type字段值保持一致
let condition = 'location';
// rootElement是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\;
获取文本组件中光标位置,使用Promise异步回调。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
**返回值:**
| 类型 | 说明 |
| ------------------- | ---------------- |
| Promise<number> | Promise对象,返回当前光标所处位置。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// rootElement是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;
获取文本组件中光标位置,使用callback异步回调。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | ---------------------------------------- | ---- | -------------- |
| callback | AsyncCallback<number> | 是 | 回调函数,表示文本组件中光标位置。|
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
// rootElement是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;
提供拉起前台页面的能力。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](../../reference/apis-ability-kit/js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 |
**错误码:**
以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。
| 错误码ID | 错误信息 |
| ------- | ---------------------------------------- |
| 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. |
**示例:**
```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}`);
});
```