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| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 47| 9300003 | No accessibility permission to perform the operation. | 48 49**示例:** 50 51```ts 52import { AccessibilityElement } from '@kit.AccessibilityKit'; 53import { BusinessError } from '@kit.BasicServicesKit'; 54 55let rootElement: AccessibilityElement; 56 57axContext.getWindowRootElement().then((data: AccessibilityElement) => { 58 rootElement = data; 59 console.log(`Succeeded in get root element of the window, ${JSON.stringify(data)}`); 60 await rootElement.enableScreenCurtain(true); 61 console.log(`Succeeded in enableScreenCurtain}`); 62}).catch((err: BusinessError) => { 63 console.error(`failed to enableScreenCurtain, Code is ${err.code}, message is ${err.message}`); 64}); 65``` 66 67### findElement('elementId')<sup>12+</sup> 68 69findElement(type: 'elementId', condition: number): Promise\<AccessibilityElement>; 70 71根据elementId查询当前活动窗口下的节点元素,使用Promise异步回调。 72 73**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 74 75**参数:** 76 77| 参数名 | 类型 | 必填 | 说明 | 78| --------- | --------------------------------- | ---- | ---------------------------------------- | 79| type | string | 是 | 固定为'elementId', 表示根据elementId查询当前活动窗口下的节点元素。 | 80| condition | number | 是 | 表示要查询的节点元素的elementId。 | 81 82**返回值:** 83 84| 类型 | 说明 | 85| ----------------------------------- | -------------------------------- | 86| Promise<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)> | Promise对象,返回满足指定查询条件的节点元素。 | 87 88**错误码:** 89 90以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 91 92| 错误码ID | 错误信息 | 93| ------- | ----------------------------- | 94| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 95 96**示例:** 97 98```ts 99import { BusinessError } from '@kit.BasicServicesKit'; 100 101//elementId为10 102let condition = 10; 103 104// rootElement是AccessibilityElement的实例 105rootElement.findElement('elementId', condition).then((data: AccessibilityElement) => { 106 console.log(`Succeeded in find element, ${JSON.stringify(data)}`); 107}).catch((err: BusinessError) => { 108 console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`); 109}); 110``` 111 112### findElement('textType')<sup>12+</sup> 113 114findElement(type: 'textType', condition: string): Promise\<Array\<AccessibilityElement>>; 115 116根据节点配置的accessibilityTextHint无障碍文本类型查询所有节点元素,使用Promise异步回调。 117 118**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 119 120**参数:** 121 122| 参数名 | 类型 | 必填 | 说明 | 123| --------- | ------ | ---- | ----------------------------- | 124| type | string | 是 | 固定为'textType', 表示根据文本类型查找节点元素。 | 125| condition | string | 是 | 表示查找的条件。 | 126 127**返回值:** 128 129| 类型 | 说明 | 130| ---------------------------------------- | ----------------------------- | 131| Promise<Array<[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)>> | Promise对象,返回满足指定查询关键字的所有节点元素。 | 132 133**错误码:** 134 135以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 136 137| 错误码ID | 错误信息 | 138| ------- | ----------------------------- | 139| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 140 141**示例:** 142 143```ts 144import { BusinessError } from '@kit.BasicServicesKit'; 145 146// condition的内容需要与目标组件accessibilityTextHint属性的type字段值保持一致 147let condition = 'location'; 148 149// rootElement是AccessibilityElement的实例 150rootElement.findElement('textType', condition).then((data: AccessibilityElement[]) => { 151 console.log(`Succeeded in find element, ${JSON.stringify(data)}`); 152}).catch((err: BusinessError) => { 153 console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`); 154}); 155``` 156 157### getCursorPosition<sup>12+</sup> 158 159getCursorPosition(): Promise\<number>; 160 161获取文本组件中光标位置,使用Promise异步回调。 162 163**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 164 165**返回值:** 166 167| 类型 | 说明 | 168| ------------------- | ---------------- | 169| Promise<number> | Promise对象,返回当前光标所处位置。 | 170 171**示例:** 172 173```ts 174import { BusinessError } from '@kit.BasicServicesKit'; 175 176// rootElement是AccessibilityElement的实例 177rootElement.getCursorPosition().then((data: number) => { 178 console.info(`Succeeded in getCursorPosition, ${data}`); 179}).catch((err: BusinessError) => { 180 console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`); 181}); 182``` 183 184### getCursorPosition<sup>12+</sup> 185 186getCursorPosition(callback: AsyncCallback\<number>): void; 187 188获取文本组件中光标位置,使用callback异步回调。 189 190**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 191 192**参数:** 193 194| 参数名 | 类型 | 必填 | 说明 | 195| ----------- | ---------------------------------------- | ---- | -------------- | 196| callback | AsyncCallback<number> | 是 | 回调函数,表示文本组件中光标位置。| 197 198**示例:** 199 200```ts 201import { BusinessError } from '@kit.BasicServicesKit'; 202 203// rootElement是AccessibilityElement的实例 204rootElement.getCursorPosition((err: BusinessError, data: number) => { 205 if (err && err.code) { 206 console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`); 207 return; 208 } 209 console.info(`Succeeded in getCursorPosition, ${data}`); 210}); 211``` 212 213### startAbility<sup>12+</sup> 214 215startAbility(want: Want): void; 216 217提供拉起前台页面的能力。 218 219**系统能力**:SystemCapability.BarrierFree.Accessibility.Core 220 221**参数:** 222 223| 参数名 | 类型 | 必填 | 说明 | 224| -------- | -------- | -------- | -------- | 225| want | [Want](../../reference/apis-ability-kit/js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | 226 227**错误码:** 228 229以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 230 231| 错误码ID | 错误信息 | 232| ------- | ---------------------------------------- | 233| 201 | Permission denied. Interface caller does not have permission. | 234| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 235 236**示例:** 237 238```ts 239import { BusinessError } from '@kit.BasicServicesKit'; 240 241let want: Want = { 242 bundleName: 'com.huawei.hmos.photos' 243 abilityName: 'com.huawei.hmos.photos.MainAbility' 244} 245 246axContext.startAbility(want).then(() => { 247 console.info(`startAbility Succeeded enable ability`); 248}).catch((err: BusinessError) => { 249 console.error(`startAbility failed to enable ability, Code is ${err.code}, message is ${err.message}`); 250}); 251```