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