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