1e41f4b71Sopenharmony_ci# AccessibilityExtensionContext (辅助功能扩展上下文)(系统接口) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciAccessibilityExtensionContext是AccessibilityExtensionAbility上下文环境,继承自ExtensionContext。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci辅助功能扩展上下文模块提供辅助功能扩展的上下文环境的能力,包括允许配置辅助应用关注信息类型、查询节点信息、手势注入等。 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci> **说明:** 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> - 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 10e41f4b71Sopenharmony_ci> - 当前页面仅包含本模块的系统接口,其他公开接口请参[AccessibilityExtensionContext (辅助功能扩展上下文)](js-apis-inner-application-accessibilityExtensionContext.md)。 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci## 使用说明 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci在使用AccessibilityExtensionContext的功能前,需要通过AccessibilityExtensionAbility子类实例获取AccessibilityExtensionContex的实例。 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci```ts 17e41f4b71Sopenharmony_ciimport { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciclass EntryAbility extends AccessibilityExtensionAbility { 20e41f4b71Sopenharmony_ci onConnect(): void { 21e41f4b71Sopenharmony_ci let axContext = this.context; 22e41f4b71Sopenharmony_ci } 23e41f4b71Sopenharmony_ci} 24e41f4b71Sopenharmony_ci``` 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci### enableScreenCurtain<sup>12+</sup> 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_cienableScreenCurtain(isEnable: boolean): void; 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci提供开启/关闭幕帘屏的能力。 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci**参数:** 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 37e41f4b71Sopenharmony_ci| ----------- | ---------------------------------------- | ---- | -------------- | 38e41f4b71Sopenharmony_ci| isEnable | boolean | 是 | true表示打开幕帘屏功能,false表示关闭幕帘屏功能。| 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci**错误码:** 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 45e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- | 46e41f4b71Sopenharmony_ci| 202 | Permission verification failed. A non-system application calls a system API. | 47e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 48e41f4b71Sopenharmony_ci| 9300003 | No accessibility permission to perform the operation. | 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci**示例:** 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci```ts 53e41f4b71Sopenharmony_ciimport { AccessibilityElement } from '@kit.AccessibilityKit'; 54e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_cilet rootElement: AccessibilityElement; 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ciaxContext.getWindowRootElement().then((data: AccessibilityElement) => { 59e41f4b71Sopenharmony_ci rootElement = data; 60e41f4b71Sopenharmony_ci console.log(`Succeeded in get root element of the window, ${JSON.stringify(data)}`); 61e41f4b71Sopenharmony_ci await rootElement.enableScreenCurtain(true); 62e41f4b71Sopenharmony_ci console.log(`Succeeded in enableScreenCurtain}`); 63e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 64e41f4b71Sopenharmony_ci console.error(`failed to enableScreenCurtain, Code is ${err.code}, message is ${err.message}`); 65e41f4b71Sopenharmony_ci}); 66e41f4b71Sopenharmony_ci``` 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci### findElement('elementId')<sup>12+</sup> 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_cifindElement(type: 'elementId', condition: number): Promise\<AccessibilityElement>; 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci根据elementId查询当前活动窗口下的节点元素,使用Promise异步回调。 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci**参数:** 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 79e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | ---------------------------------------- | 80e41f4b71Sopenharmony_ci| type | string | 是 | 固定为'elementId', 表示根据elementId查询当前活动窗口下的节点元素。 | 81e41f4b71Sopenharmony_ci| condition | number | 是 | 表示要查询的节点元素的elementId。 | 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci**返回值:** 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci| 类型 | 说明 | 86e41f4b71Sopenharmony_ci| ----------------------------------- | -------------------------------- | 87e41f4b71Sopenharmony_ci| Promise<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)> | Promise对象,返回满足指定查询条件的节点元素。 | 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci**错误码:** 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 94e41f4b71Sopenharmony_ci| ------- | ----------------------------- | 95e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci**示例:** 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ci```ts 100e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci//elementId为10 103e41f4b71Sopenharmony_cilet condition = 10; 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci// rootElement是AccessibilityElement的实例 106e41f4b71Sopenharmony_cirootElement.findElement('elementId', condition).then((data: AccessibilityElement) => { 107e41f4b71Sopenharmony_ci console.log(`Succeeded in find element, ${JSON.stringify(data)}`); 108e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 109e41f4b71Sopenharmony_ci console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`); 110e41f4b71Sopenharmony_ci}); 111e41f4b71Sopenharmony_ci``` 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci### findElement('textType')<sup>12+</sup> 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_cifindElement(type: 'textType', condition: string): Promise\<Array\<AccessibilityElement>>; 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci根据节点配置的accessibilityTextHint无障碍文本类型查询所有节点元素,使用Promise异步回调。 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci**参数:** 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 124e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ----------------------------- | 125e41f4b71Sopenharmony_ci| type | string | 是 | 固定为'textType', 表示根据文本类型查找节点元素。 | 126e41f4b71Sopenharmony_ci| condition | string | 是 | 表示查找的条件。 | 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci**返回值:** 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci| 类型 | 说明 | 131e41f4b71Sopenharmony_ci| ---------------------------------------- | ----------------------------- | 132e41f4b71Sopenharmony_ci| Promise<Array<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)>> | Promise对象,返回满足指定查询关键字的所有节点元素。 | 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci**错误码:** 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 139e41f4b71Sopenharmony_ci| ------- | ----------------------------- | 140e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci**示例:** 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci```ts 145e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci// condition的内容需要与目标组件accessibilityTextHint属性的type字段值保持一致 148e41f4b71Sopenharmony_cilet condition = 'location'; 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci// rootElement是AccessibilityElement的实例 151e41f4b71Sopenharmony_cirootElement.findElement('textType', condition).then((data: AccessibilityElement[]) => { 152e41f4b71Sopenharmony_ci console.log(`Succeeded in find element, ${JSON.stringify(data)}`); 153e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 154e41f4b71Sopenharmony_ci console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`); 155e41f4b71Sopenharmony_ci}); 156e41f4b71Sopenharmony_ci``` 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci### getCursorPosition<sup>12+</sup> 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_cigetCursorPosition(): Promise\<number>; 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci获取文本组件中光标位置,使用Promise异步回调。 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci**返回值:** 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci| 类型 | 说明 | 169e41f4b71Sopenharmony_ci| ------------------- | ---------------- | 170e41f4b71Sopenharmony_ci| Promise<number> | Promise对象,返回当前光标所处位置。 | 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci**示例:** 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci```ts 175e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci// rootElement是AccessibilityElement的实例 178e41f4b71Sopenharmony_cirootElement.getCursorPosition().then((data: number) => { 179e41f4b71Sopenharmony_ci console.info(`Succeeded in getCursorPosition, ${data}`); 180e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 181e41f4b71Sopenharmony_ci console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`); 182e41f4b71Sopenharmony_ci}); 183e41f4b71Sopenharmony_ci``` 184e41f4b71Sopenharmony_ci 185e41f4b71Sopenharmony_ci### getCursorPosition<sup>12+</sup> 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_cigetCursorPosition(callback: AsyncCallback\<number>): void; 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci获取文本组件中光标位置,使用callback异步回调。 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci**参数:** 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 196e41f4b71Sopenharmony_ci| ----------- | ---------------------------------------- | ---- | -------------- | 197e41f4b71Sopenharmony_ci| callback | AsyncCallback<number> | 是 | 回调函数,表示文本组件中光标位置。| 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci**示例:** 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci```ts 202e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci// rootElement是AccessibilityElement的实例 205e41f4b71Sopenharmony_cirootElement.getCursorPosition((err: BusinessError, data: number) => { 206e41f4b71Sopenharmony_ci if (err && err.code) { 207e41f4b71Sopenharmony_ci console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`); 208e41f4b71Sopenharmony_ci return; 209e41f4b71Sopenharmony_ci } 210e41f4b71Sopenharmony_ci console.info(`Succeeded in getCursorPosition, ${data}`); 211e41f4b71Sopenharmony_ci}); 212e41f4b71Sopenharmony_ci``` 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci### startAbility<sup>12+</sup> 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_cistartAbility(want: Want): void; 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci提供拉起前台页面的能力。 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**参数:** 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 225e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 226e41f4b71Sopenharmony_ci| want | [Want](../../reference/apis-ability-kit/js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci**错误码:** 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 233e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- | 234e41f4b71Sopenharmony_ci| 201 | Permission denied. Interface caller does not have permission. | 235e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 236e41f4b71Sopenharmony_ci 237e41f4b71Sopenharmony_ci**示例:** 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci```ts 240e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_cilet want: Want = { 243e41f4b71Sopenharmony_ci bundleName: 'com.huawei.hmos.photos' 244e41f4b71Sopenharmony_ci abilityName: 'com.huawei.hmos.photos.MainAbility' 245e41f4b71Sopenharmony_ci} 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ciaxContext.startAbility(want).then(() => { 248e41f4b71Sopenharmony_ci console.info(`startAbility Succeeded enable ability`); 249e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 250e41f4b71Sopenharmony_ci console.error(`startAbility failed to enable ability, Code is ${err.code}, message is ${err.message}`); 251e41f4b71Sopenharmony_ci}); 252e41f4b71Sopenharmony_ci```