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&lt;[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)&gt; | 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&lt;Array&lt;[AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext.md#accessibilityelement9)&gt;&gt; | 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&lt;number&gt; | 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&lt;number&gt; | 是    | 回调函数,表示文本组件中光标位置。|
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```