• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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```
253
254### getElements<sup>18+</sup>
255
256getElements(windowId: number, elementId?: number): Promise<Array&lt;AccessibilityElement&gt;>;
257
258提供批量查询节点的能力。
259
260**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
261
262**参数:**
263
264| 参数名 | 类型 | 必填 | 说明 |
265| -------- | -------- | -------- | -------- |
266| windowId | number | 是 | 表示查询的窗口id。 |
267| elementId | number | 否 | 表示查询的节点id。传入此参数表示查询当前节点下的所有子节点列表,不传则查询窗口下所有节点。 |
268
269**返回值:**
270| 类型                                  | 说明                     |
271| ----------------------------------- | ---------------------- |
272| Promise<Array&lt;AccessibilityElement&gt;> | Promise对象,返回当前窗口或者当前节点下的所有子节点列表。 |
273
274**错误码:**
275
276以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。
277
278| 错误码ID   | 错误信息                                     |
279| ------- | ---------------------------------------- |
280| 201 | Permission verification failed. The application does not have the permission required to call the API. |
281| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
282| 9300003 | No accessibility permission to perform the operation. |
283
284**示例:**
285
286```ts
287import { AccessibilityElement } from '@kit.AccessibilityKit';
288import { BusinessError } from '@kit.BasicServicesKit';
289
290let windowId: number = 10;
291let elementId: number = 10;
292
293axContext.getElements(windowId, elementId).then((data:AccessibilityElement[]) => {
294  console.log(`Succeeded in find element, ${JSON.stringify(data)}`);
295}).catch((err: BusinessError) => {
296  console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`);
297});
298```
299
300### getDefaultFocusedElementIds<sup>18+</sup>
301
302getDefaultFocusedElementIds(windowId: number): Promise<Array&lt;number&gt;>;
303
304提供查询应用自定义默认焦点的能力。
305
306**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
307
308**参数:**
309
310| 参数名 | 类型 | 必填 | 说明 |
311| -------- | -------- | -------- | -------- |
312| windowId | number | 是 | 表示查询的窗口id。 |
313
314**返回值:**
315| 类型                                  | 说明                     |
316| ----------------------------------- | ---------------------- |
317| Promise<Array&lt;number&gt;> | Promise对象,返回当前窗口下的自定义默认焦点列表。 |
318
319**错误码:**
320
321以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。
322
323| 错误码ID   | 错误信息                                     |
324| ------- | ---------------------------------------- |
325| 202 | Permission verification failed. A non-system application calls a system API. |
326| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
327| 9300003 | No accessibility permission to perform the operation. |
328
329**示例:**
330
331```ts
332import { AccessibilityElement } from '@kit.AccessibilityKit';
333import { BusinessError } from '@kit.BasicServicesKit';
334
335let windowId: number = 10;
336
337axContext.getDefaultFocusedElementIds(windowId).then((data: number[]) => {
338  console.log(`Succeeded in get default focus, ${JSON.stringify(data)}`);
339}).catch((err: BusinessError) => {
340  console.error(`failed to get default focus, Code is ${err.code}, message is ${err.message}`);
341});
342```