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