js-apis-inner-application-accessibilityExtensionContext.md 38.4 KB
Newer Older
Z
zaki 已提交
1
# 辅助功能扩展上下文
2 3 4

AccessibilityExtensionContext是AccessibilityExtensionAbility上下文环境,继承自ExtensionContext。

Z
zaki 已提交
5
辅助功能扩展上下文模块提供辅助功能扩展的上下文环境的能力,包括允许配置辅助应用关注信息类型、查询节点信息、手势注入等。
6 7 8 9 10 11

> **说明:**
>
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> 本模块接口仅可在Stage模型下使用。

L
laiguizhong 已提交
12 13
## 使用说明

14
在使用AccessibilityExtensionContext的功能前,需要通过AccessibilityExtensionAbility子类实例获取AccessibilityExtensionContex的实例。
15

M
m00512953 已提交
16
```ts
H
HelloCrease 已提交
17
import AccessibilityExtensionAbility from '@ohos.application.AccessibilityExtensionAbility'
18
let axContext;
L
laiguizhong 已提交
19 20
class MainAbility extends AccessibilityExtensionAbility {
    onConnect(): void {
Z
zaki 已提交
21
        console.log('AxExtensionAbility onConnect');
22
        axContext = this.context;
L
laiguizhong 已提交
23 24
    }
}
25 26 27 28 29 30
```

## FocusDirection

表示查询下一焦点元素的方向。

31
**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core
32

D
merge  
donglin 已提交
33
| 名称       | 说明      |
H
HelloCrease 已提交
34 35 36 37 38 39
| -------- | ------- |
| up       | 表示向上查询。 |
| down     | 表示向上查询。 |
| left     | 表示向左查询。 |
| right    | 表示向右查询。 |
| forward  | 表示向前查询。 |
40 41 42 43 44 45
| backward | 表示向后查询。 |

## FocusType

表示查询焦点元素的类型。

46
**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core
47

D
merge  
donglin 已提交
48
| 名称            | 说明          |
H
HelloCrease 已提交
49
| ------------- | ----------- |
50
| accessibility | 表示无障碍的焦点类型。 |
H
HelloCrease 已提交
51
| normal        | 表示普通的焦点类型。  |
52 53 54 55 56

## Rect

表示矩形区域。

57
**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core
58

59
| 名称     | 类型   | 可读   | 可写   | 说明        |
H
HelloCrease 已提交
60 61 62 63 64
| ------ | ------ | ---- | ---- | --------- |
| left   | number | 是    | 否    | 矩形区域的左边界。 |
| top    | number | 是    | 否    | 矩形区域的上边界。 |
| width  | number | 是    | 否    | 矩形区域的宽度。  |
| height | number | 是    | 否    | 矩形区域的高度。  |
65 66 67 68 69

## WindowType

表示窗口的类型。

70
**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core
71

D
merge  
donglin 已提交
72
| 名称          | 说明        |
H
HelloCrease 已提交
73
| ----------- | --------- |
74
| application | 表示应用窗口类型。 |
H
HelloCrease 已提交
75
| system      | 表示系统窗口类型。 |
76 77 78

## AccessibilityExtensionContext.setTargetBundleName

Z
zaki 已提交
79
setTargetBundleName(targetNames: Array\<string>): Promise\<void>;
80

Z
zaki 已提交
81
设置关注的目标包名,使用Promise异步回调。
82 83 84 85 86

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

87
| 参数名         | 类型                | 必填   | 说明       |
H
HelloCrease 已提交
88 89
| ----------- | ------------------- | ---- | -------- |
| targetNames | Array&lt;string&gt; | 是    | 关注的目标包名。 |
90 91 92

**返回值:**

H
HelloCrease 已提交
93 94
| 类型                     | 说明                    |
| ---------------------- | --------------------- |
Z
zaki 已提交
95
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
96 97 98 99

**示例:**

```ts
Z
zaki 已提交
100
let targetNames = ['com.ohos.xyz'];
101 102 103 104 105 106 107 108 109
try {
    axContext.setTargetBundleName(targetNames).then(() => {
        console.info('set target bundle names success');
    }).catch((err) => {
        console.error('failed to set target bundle names, because ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('failed to set target bundle names, because ' + JSON.stringify(exception));
};
Z
zaki 已提交
110 111 112 113 114 115 116 117 118 119 120 121
```

## AccessibilityExtensionContext.setTargetBundleName

setTargetBundleName(targetNames: Array\<string>, callback: AsyncCallback\<void>): void;

设置关注的目标包名,使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

122
| 参数名         | 类型                | 必填   | 说明       |
Z
zaki 已提交
123 124 125 126 127 128 129 130
| ----------- | ------------------- | ---- | -------- |
| targetNames | Array&lt;string&gt; | 是    | 关注的目标包名。 |
| callback    | AsyncCallback&lt;void&gt; | 是    | 回调函数,如果设置关注的目标包名失败,则AsyncCallback中err有数据返回。 |

**示例:**

```ts
let targetNames = ['com.ohos.xyz'];
131 132 133 134 135 136 137 138 139 140 141
try {
    axContext.setTargetBundleName(targetNames, (err, data) => {
        if (err) {
            console.error('failed to set target bundle names, because ' + JSON.stringify(err));
            return;
        }
        console.info('set target bundle names success');
    });
} catch (exception) {
    console.error('failed to set target bundle names, because ' + JSON.stringify(exception));
};
142 143 144 145 146 147
```

## AccessibilityExtensionContext.getFocusElement

getFocusElement(isAccessibilityFocus?: boolean): Promise\<AccessibilityElement>;

Z
zaki 已提交
148
获取焦点元素, 使用Promise异步回调。
149 150 151 152 153

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

154
| 参数名                  | 类型    | 必填   | 说明                  |
H
HelloCrease 已提交
155 156
| -------------------- | ------- | ---- | ------------------- |
| isAccessibilityFocus | boolean | 否    | 获取的是否是无障碍焦点元素,默认为否。 |
157 158 159

**返回值:**

H
HelloCrease 已提交
160 161
| 类型                                  | 说明                     |
| ----------------------------------- | ---------------------- |
Z
zaki 已提交
162
| Promise&lt;AccessibilityElement&gt; | Promise对象,返回当前对应的焦点元素。 |
163

164 165 166 167 168 169 170 171
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

172 173 174
**示例:**

```ts
Z
zaki 已提交
175
let focusElement;
176 177 178 179 180 181 182 183 184 185
try {
    axContext.getFocusElement().then((data) => {
        focusElement = data;
        console.log('get focus element success');
    }).catch((err) => {
        console.error('failed to get focus element, because ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('failed to get focus element, because ' + JSON.stringify(exception));
}
186 187
```

Z
zaki 已提交
188 189 190 191 192 193 194 195 196 197
## AccessibilityExtensionContext.getFocusElement

getFocusElement(callback: AsyncCallback\<AccessibilityElement>): void;

获取焦点元素, 使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

198
| 参数名 | 类型 | 必填 | 说明 |
Z
zaki 已提交
199 200 201
| -------- | -------- | -------- | -------- |
| callback    | AsyncCallback&lt;AccessibilityElement&gt; | 是    | 回调函数,返回当前对应的焦点元素。 |

202 203 204 205 206 207 208 209
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

Z
zaki 已提交
210 211 212
**示例:**

```ts
213
let focusElement;
214 215 216 217 218 219 220 221 222 223 224 225
try {
    axContext.getFocusElement((err, data) => {
        if (err) {
            console.error('failed to get focus element, because ' + JSON.stringify(err));
            return;
        }
        focusElement = data;
        console.info('get focus element success');
    });
} catch (exception) {
    console.error('failed to get focus element, because ' + JSON.stringify(exception));
}
Z
zaki 已提交
226 227 228 229 230 231 232 233 234 235 236 237
```

## AccessibilityExtensionContext.getFocusElement

getFocusElement(isAccessibilityFocus: boolean, callback: AsyncCallback\<AccessibilityElement>): void;

获取焦点元素, 使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

238
| 参数名                  | 类型    | 必填   | 说明                  |
Z
zaki 已提交
239 240 241 242 243 244 245
| -------------------- | ------- | ---- | ------------------- |
| isAccessibilityFocus | boolean | 是    | 获取的是否是无障碍焦点元素。 |
| callback    | AsyncCallback&lt;AccessibilityElement&gt; | 是    | 回调函数,返回当前对应的焦点元素。 |

**示例:**

```ts
246
let focusElement;
247
let isAccessibilityFocus = true;
248 249
try {
    axContext.getFocusElement(isAccessibilityFocus, (err, data) => {
Z
zaki 已提交
250
    if (err) {
251
        console.error('failed to get focus element, because ' + JSON.stringify(err));
Z
zaki 已提交
252 253 254 255 256
        return;
    }
    focusElement = data;
    console.info('get focus element success');
});
257 258 259
} catch (exception) {
    console.error('failed to get focus element, because ' + JSON.stringify(exception));
}
Z
zaki 已提交
260
```
261 262 263 264
## AccessibilityExtensionContext.getWindowRootElement

getWindowRootElement(windowId?: number): Promise\<AccessibilityElement>;

Z
zaki 已提交
265
获取指定窗口的根节点元素, 使用Promise异步回调。
266 267 268 269 270

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

271
| 参数名                  | 类型    | 必填   | 说明                  |
Z
zaki 已提交
272 273
| -------------------- | ------- | ---- | ------------------- |
| windowId | number | 否    | 指定窗口的编号,未指定则从当前活跃窗口获取。 |
274 275 276

**返回值:**

Z
zaki 已提交
277 278 279 280
| 类型                                  | 说明                     |
| ----------------------------------- | ---------------------- |
| Promise&lt;AccessibilityElement&gt; | Promise对象,返回指定屏幕的所有窗口。 |

281 282 283 284 285 286 287 288
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

Z
zaki 已提交
289 290 291 292
**示例:**

```ts
let rootElement;
293 294 295 296 297 298 299 300 301 302
try {
    axContext.getWindowRootElement().then((data) => {
        rootElement = data;
        console.log('get root element of the window success');
    }).catch((err) => {
        console.error('failed to get root element of the window, because ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('failed to get root element of the window, ' + JSON.stringify(exception));
}
Z
zaki 已提交
303 304 305 306 307 308 309 310 311 312 313 314
```

## AccessibilityExtensionContext.getWindowRootElement

getWindowRootElement(callback: AsyncCallback\<AccessibilityElement>): void;

获取指定窗口的根节点元素, 使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

315
| 参数名 | 类型 | 必填 | 说明 |
Z
zaki 已提交
316 317 318
| -------- | -------- | -------- | -------- |
| callback    | AsyncCallback&lt;AccessibilityElement&gt; | 是    | 回调函数,返回指定窗口的根节点元素。 |

319 320 321 322 323 324 325 326
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

Z
zaki 已提交
327 328 329
**示例:**

```ts
330
let rootElement;
331 332
try {
    axContext.getWindowRootElement((err, data) => {
Z
zaki 已提交
333
    if (err) {
334
        console.error('failed to get root element of the window, because ' + JSON.stringify(err));
Z
zaki 已提交
335 336 337 338 339
        return;
    }
    rootElement = data;
    console.info('get root element of the window success');
});
340 341 342
} catch (exception) {
    console.error('failed to get root element of the window, because ' + JSON.stringify(exception));
}
Z
zaki 已提交
343 344 345 346 347 348 349 350 351 352 353 354
```

## AccessibilityExtensionContext.getWindowRootElement

getWindowRootElement(windowId: number, callback: AsyncCallback\<AccessibilityElement>): void;

获取指定屏幕中的所有窗口, 使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

355
| 参数名                  | 类型    | 必填   | 说明                  |
Z
zaki 已提交
356 357 358
| -------------------- | ------- | ---- | ------------------- |
| windowId | number | 是    | 指定窗口的编号,未指定则从当前活跃窗口获取。 |
| callback    | AsyncCallback&lt;AccessibilityElement&gt; | 是    | 回调函数,返回指定窗口的根节点元素。 |
359

360 361 362 363 364 365 366 367
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

368 369 370
**示例:**

```ts
371
let rootElement;
372
let windowId = 10;
373 374
try {
    axContext.getWindowRootElement(windowId, (err, data) => {
Z
zaki 已提交
375
    if (err) {
376
        console.error('failed to get root element of the window, because ' + JSON.stringify(err));
Z
zaki 已提交
377 378 379 380 381
        return;
    }
    rootElement = data;
    console.info('get root element of the window success');
});
382 383 384
} catch (exception) {
    console.error('failed to get root element of the window, because ' + JSON.stringify(exception));
}
385 386 387 388
```

## AccessibilityExtensionContext.getWindows

Z
zaki 已提交
389
getWindows(displayId?: number): Promise\<Array\<AccessibilityElement>>;
390

Z
zaki 已提交
391
获取指定屏幕中的所有窗口, 使用Promise异步回调。
392 393 394 395 396

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

397
| 参数名                  | 类型    | 必填   | 说明                  |
Z
zaki 已提交
398 399
| -------------------- | ------- | ---- | ------------------- |
| displayId | number | 否    | 指定的屏幕编号,未指定则从默认主屏幕获取。 |
400 401 402

**返回值:**

Z
zaki 已提交
403 404 405
| 类型                                  | 说明                     |
| ----------------------------------- | ---------------------- |
| Promise&lt;Array&lt;AccessibilityElement&gt;&gt; | Promise对象,返回指定屏幕的所有窗口。 |
406

407 408 409 410 411 412 413 414
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

415 416 417
**示例:**

```ts
Z
zaki 已提交
418
let windows;
419 420 421 422 423 424 425 426 427 428
try {
    axContext.getWindows().then((data) => {
        windows = data;
        console.log('get windows success');
    }).catch((err) => {
        console.error('failed to get windows, because ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('failed to get windows, because ' + JSON.stringify(exception));
}
Z
zaki 已提交
429 430 431 432 433 434 435 436 437 438 439 440
```

## AccessibilityExtensionContext.getWindows

getWindows(callback: AsyncCallback\<Array\<AccessibilityElement>>): void;

获取指定屏幕中的所有窗口, 使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

441
| 参数名 | 类型 | 必填 | 说明 |
Z
zaki 已提交
442 443 444
| -------- | -------- | -------- | -------- |
| callback    | AsyncCallback&lt;Array&lt;AccessibilityElement&gt;&gt; | 是    | 回调函数,返回指定屏幕的所有窗口。 |

445 446 447 448 449 450 451 452
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

Z
zaki 已提交
453 454 455 456
**示例:**

```ts
let windows;
457 458 459 460 461 462 463 464 465 466 467 468
try {
    axContext.getWindows((err, data) => {
        if (err) {
            console.error('failed to get windows, because ' + JSON.stringify(err));
            return;
        }
        windows = data;
        console.info('get windows success');
    });
} catch (exception) {
    console.error('failed to get windows, because ' + JSON.stringify(exception));
}
Z
zaki 已提交
469 470 471 472 473 474 475 476 477 478 479 480
```

## AccessibilityExtensionContext.getWindows

getWindows(displayId: number, callback: AsyncCallback\<Array\<AccessibilityElement>>): void;

获取指定屏幕中的所有窗口, 使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

481
| 参数名                  | 类型    | 必填   | 说明                  |
Z
zaki 已提交
482 483 484 485
| -------------------- | ------- | ---- | ------------------- |
| displayId | number | 是    | 指定的屏幕编号,未指定则从默认主屏幕获取。 |
| callback    | AsyncCallback&lt;Array&lt;AccessibilityElement&gt;&gt; | 是    | 回调函数,返回指定屏幕的所有窗口。 |

486 487 488 489 490 491 492 493
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

Z
zaki 已提交
494 495 496 497
**示例:**

```ts
let windows;
498 499 500 501 502 503 504 505 506 507 508 509 510
let displayId = 10;
try {
    axContext.getWindows(displayId, (err, data) => {
        if (err) {
            console.error('failed to get windows, because ' + JSON.stringify(err));
            return;
        }
        windows = data;
        console.info('get windows success');
    });
} catch (exception) {
    console.error('failed to get windows, because ' + JSON.stringify(exception));
}
511 512
```

L
laiguizhong 已提交
513
## AccessibilityExtensionContext.injectGesture
514

Z
zaki 已提交
515 516 517 518 519 520 521 522
injectGesture(gesturePath: GesturePath): Promise\<void>;

注入手势,使用Promise异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

523
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
524 525 526 527 528 529 530 531 532
| ----------- | ---------------------------------------- | ---- | -------------- |
| gesturePath | [GesturePath](js-apis-accessibility-GesturePath.md#gesturepath) | 是    | 表示手势的路径信息。     |

**返回值:**

| 类型                                  | 说明                     |
| ----------------------------------- | ---------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

533 534 535 536 537 538 539 540
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

Z
zaki 已提交
541 542 543
**示例:**

```ts
544
import GesturePath from "@ohos.accessibility.GesturePath";
545 546
import GesturePoint from '@ohos.accessibility.GesturePoint';
let gesturePath = new GesturePath.GesturePath(100);
547 548
try {
    for (let i = 0; i < 10; i++) {
549
        let gesturePoint = new GesturePoint.GesturePoint(100, i * 200);
550 551 552 553 554 555 556 557 558
        gesturePath.points.push(gesturePoint);
    }
    axContext.injectGesture(gesturePath).then(() => {
        console.info('inject gesture success');
    }).catch((err) => {
        console.error('failed to inject gesture, because ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('failed to inject gesture, because ' + JSON.stringify(exception));
Z
zaki 已提交
559 560 561 562
}
```
## AccessibilityExtensionContext.injectGesture

563
injectGesture(gesturePath: GesturePath, callback: AsyncCallback\<void>): void
564

Z
zaki 已提交
565
注入手势,使用callback异步回调。
566 567 568 569 570

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

571
| 参数名         | 类型                                     | 必填   | 说明             |
H
HelloCrease 已提交
572
| ----------- | ---------------------------------------- | ---- | -------------- |
Z
zaki 已提交
573 574
| gesturePath | [GesturePath](js-apis-accessibility-GesturePath.md#gesturepath) | 是    | 表示手势的路径信息。     |
| callback    | AsyncCallback&lt;void&gt;                  | 是    | 回调函数,表示注入手势执行结果的回调。 |
575

576 577 578 579 580 581 582 583
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300003 | Do not have accessibility right for this operation. |

584 585 586
**示例:**

```ts
587
import GesturePath from "@ohos.accessibility.GesturePath";
588 589
import GesturePoint from '@ohos.accessibility.GesturePoint';
let gesturePath = new GesturePath.GesturePath(100);
590 591
try {
    for (let i = 0; i < 10; i++) {
592
        let gesturePoint = new GesturePoint.GesturePoint(100, i * 200);
593
        gesturePath.points.push(gesturePoint);
Z
zaki 已提交
594
    }
595 596 597 598 599 600 601 602 603 604
    axContext.injectGesture(gesturePath, (err, data) => {
        if (err) {
            console.error('failed to inject gesture, because ' + JSON.stringify(err));
            return;
        }
        console.info('inject gesture success');
    });
} catch (exception) {
    console.error('failed to inject gesture, because ' + JSON.stringify(exception));
}
605
```
606
## AccessibilityElement<sup>9+</sup>
Z
zaki 已提交
607

608
无障碍节点元素, 在调用AccessibilityElement的方法前,需要先通过[AccessibilityExtensionContext.getFocusElement()](#accessibilityextensioncontextgetfocuselement)或者[AccessibilityExtensionContext.getWindowRootElement()](#accessibilityextensioncontextgetwindowrootelement)获取AccessibilityElement实例。
Z
zaki 已提交
609 610 611 612

**系统能力**:以下各项对应的系统能力均为SystemCapability.BarrierFree.Accessibility.Core

## attributeNames
Z
zaki 已提交
613

614
attributeNames\<T extends keyof ElementAttributeValues>(): Promise\<Array\<T>>;
Z
zaki 已提交
615

Z
zaki 已提交
616
获取节点元素的所有属性名称,使用Promise异步回调。
Z
zaki 已提交
617 618 619 620 621 622 623

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
Z
zaki 已提交
624
| Promise&lt;Array&lt;T&gt;&gt; | Promise对象,返回节点元素的所有属性名称。 |
Z
zaki 已提交
625 626 627 628

**示例:**

```ts
629
let rootElement;
Z
zaki 已提交
630
let attributeNames;
631 632 633 634 635 636
rootElement.attributeNames().then((data) => {
    console.log('get attribute names success');
    attributeNames = data;
}).catch((err) => {
    console.log('failed to get attribute names, because '  + JSON.stringify(err));
});
Z
zaki 已提交
637
```
Z
zaki 已提交
638 639 640 641 642 643 644 645 646 647
## attributeNames

attributeNames\<T extends keyof ElementAttributeValues>(callback: AsyncCallback\<Array\<T>>): void;

获取节点元素的所有属性名称,使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

648
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
649 650 651 652
| ----------- | ---------------------------------------- | ---- | -------------- |
| callback    | AsyncCallback&lt;Array&lt;T&gt;&gt;                  | 是    | 回调函数,返回节点元素的所有属性名称。 |

**示例:**
Z
zaki 已提交
653

Z
zaki 已提交
654
```ts
655
let rootElement;
Z
zaki 已提交
656
let attributeNames;
657 658 659 660 661 662 663 664
rootElement.attributeNames((err, data) => {
    if (err) {
        console.error('failed to get attribute names, because ' + JSON.stringify(err));
        return;
    }
    attributeNames = data;
    console.info('get attribute names success');
});
Z
zaki 已提交
665
```
Z
zaki 已提交
666 667 668 669
## AccessibilityElement.attributeValue

attributeValue\<T extends keyof ElementAttributeValues>(attributeName: T): Promise\<ElementAttributeValues[T]>;

Z
zaki 已提交
670
根据属性名称获取属性值,使用Promise异步回调。
Z
zaki 已提交
671 672 673 674 675

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

676
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
677 678 679 680 681 682 683
| ----------- | ---------------------------------------- | ---- | -------------- |
| attributeName | T | 是    | 表示属性的名称。     |

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
Z
zaki 已提交
684
| Promise&lt;ElementAttributeValues[T]&gt; | Promise对象,返回根据节点属性名称获取的属性值。 |
Z
zaki 已提交
685

686 687 688 689 690 691 692 693
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300004 | This property does not exist. |

Z
zaki 已提交
694 695 696
**示例:**

```ts
697
let attributeName = 'name';
698 699
let attributeValue;
let rootElement;
Z
zaki 已提交
700
try {
701
    rootElement.attributeValue(attributeName).then((data) => {
Z
zaki 已提交
702
        console.log('get attribute value by name success');
703
        attributeValue = data;
Z
zaki 已提交
704
    }).catch((err) => {
705
        console.log('failed to get attribute value, because '  + JSON.stringify(err));
Z
zaki 已提交
706
    });
707 708
} catch (exception) {
    console.log('failed to get attribute value, because ' + JSON.stringify(exception));
Z
zaki 已提交
709 710
}
```
Z
zaki 已提交
711 712 713 714 715 716 717 718 719 720 721
## AccessibilityElement.attributeValue

attributeValue\<T extends keyof ElementAttributeValues>(attributeName: T, 
    callback: AsyncCallback\<ElementAttributeValues[T]>): void;

根据属性名称获取属性值,使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

722
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
723 724 725 726
| ----------- | ---------------------------------------- | ---- | -------------- |
| attributeName | T | 是    | 表示属性的名称。     |
| callback    | AsyncCallback&lt;ElementAttributeValues[T]&gt;   | 是    | 回调函数,返回根据节点属性名称获取的属性值。 |

727 728 729 730 731 732 733 734
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300004 | This property does not exist. |

Z
zaki 已提交
735
**示例:**
Z
zaki 已提交
736

Z
zaki 已提交
737
```ts
738
let rootElement;
Z
zaki 已提交
739
let attributeValue;
740
let attributeName = 'name';
Z
zaki 已提交
741
try {
742
    rootElement.attributeValue(attributeName, (err, data) => {
Z
zaki 已提交
743
        if (err) {
744
            console.error('failed to get attribute value, because ' + JSON.stringify(err));
Z
zaki 已提交
745 746 747 748 749
            return;
        }
        attributeValue = data;
        console.info('get attribute value success');
    });
750 751
} catch (exception) {
    console.log('failed to get attribute value, because ' + JSON.stringify(exception));
Z
zaki 已提交
752 753 754
}
```
## actionNames
Z
zaki 已提交
755

756
actionNames(): Promise\<Array\<string>>;
Z
zaki 已提交
757

Z
zaki 已提交
758
获取节点元素支持的所有操作名称,使用Promise异步回调。
Z
zaki 已提交
759 760 761 762 763 764 765

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
Z
zaki 已提交
766
| Promise&lt;Array&lt;string&gt;&gt; | Promise对象,返回节点元素支持的所有操作名称。 |
Z
zaki 已提交
767 768 769 770

**示例:**

```ts
771
let rootElement;
Z
zaki 已提交
772
let actionNames;
773 774 775 776 777 778
rootElement.actionNames().then((data) => {
    console.log('get action names success');
    actionNames = data;
}).catch((err) => {
    console.log('failed to get action names because '  + JSON.stringify(err));
});
Z
zaki 已提交
779
```
Z
zaki 已提交
780
## actionNames
Z
zaki 已提交
781

Z
zaki 已提交
782 783 784 785 786 787 788 789
actionNames(callback: AsyncCallback\<Array\<string>>): void;

获取节点元素支持的所有操作名称,使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

790
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
791 792 793 794 795 796
| ----------- | ---------------------------------------- | ---- | -------------- |
| callback    | AsyncCallback&lt;Array&lt;string&gt;&gt;   | 是    | 回调函数,返回节点元素支持的所有操作名称。 |

**示例:**

```ts
797
let rootElement;
Z
zaki 已提交
798
let actionNames;
799 800 801 802 803 804 805 806
rootElement.actionNames((err, data) => {
    if (err) {
        console.error('failed to get action names, because ' + JSON.stringify(err));
        return;
    }
    actionNames = data;
    console.info('get action names success');
});
Z
zaki 已提交
807 808
```
## performAction
Z
zaki 已提交
809

Z
zaki 已提交
810
performAction(actionName: string, parameters?: object): Promise\<void>;
Z
zaki 已提交
811

Z
zaki 已提交
812
根据操作名称执行某个操作,使用Promise异步回调。
Z
zaki 已提交
813 814 815 816 817

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

818
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
819 820 821 822 823 824 825 826
| ----------- | ---------------------------------------- | ---- | -------------- |
| actionName | string | 是    | 表示属性的名称。     |
| parameters | object | 否    | 表示执行操作时所需要的参数。     |

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
Z
zaki 已提交
827
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
Z
zaki 已提交
828

829 830 831 832 833 834 835 836
**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300005 | This action is not supported. |

Z
zaki 已提交
837 838 839
**示例:**

```ts
840
let rootElement;
Z
zaki 已提交
841
try {
842
    rootElement.performAction('action').then((data) => {
Z
zaki 已提交
843
        console.info('perform action success');
Z
zaki 已提交
844
    }).catch((err) => {
845
        console.log('failed to perform action, because '  + JSON.stringify(err));
Z
zaki 已提交
846
    });
847 848
} catch (exception) {
    console.log('failed to perform action, because ' + JSON.stringify(exception));
Z
zaki 已提交
849 850
}
```
Z
zaki 已提交
851 852
## performAction

Z
zaki 已提交
853
performAction(actionName: string, callback: AsyncCallback\<void>): void;
Z
zaki 已提交
854 855 856 857 858 859

根据操作名称执行某个操作,使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**
Z
zaki 已提交
860

861
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
862 863
| ----------- | ---------------------------------------- | ---- | -------------- |
| actionName | string | 是    | 表示属性的名称。     |
Z
zaki 已提交
864
| callback | AsyncCallback&lt;void&gt; | 是    | 回调函数,表示执行指定操作的回调。|
865 866 867 868 869 870 871 872

**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300005 | This action is not supported. |
Z
zaki 已提交
873 874 875 876

**示例:**

```ts
877
let rootElement;
Z
zaki 已提交
878
try {
879
    rootElement.performAction('action', (err, data) => {
Z
zaki 已提交
880
        if (err) {
881
            console.error('failed to perform action, because ' + JSON.stringify(err));
Z
zaki 已提交
882 883 884 885
            return;
        }
        console.info('perform action success');
    });
886 887
} catch (exception) {
    console.log('failed to perform action, because ' + JSON.stringify(exception));
Z
zaki 已提交
888 889 890 891
}
```
## performAction

Z
zaki 已提交
892
performAction(actionName: string, parameters: object, callback: AsyncCallback\<void>): void;
Z
zaki 已提交
893 894 895 896 897 898 899

根据操作名称执行某个操作,使用callback异步回调。

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

900
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
901 902 903
| ----------- | ---------------------------------------- | ---- | -------------- |
| actionName | string | 是    | 表示属性的名称。     |
| parameters | object | 是    | 表示执行操作时所需要的参数。     |
Z
zaki 已提交
904
| callback | AsyncCallback&lt;void&gt; | 是    | 回调函数,表示执行指定操作的回调。|
905 906 907 908 909 910 911 912

**错误码:**

以下错误码的详细介绍请参见[无障碍子系统错误码](../errorcodes/errorcode-accessibility.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 9300005 | This action is not supported. |
Z
zaki 已提交
913 914 915 916

**示例:**

```ts
917
let rootElement;
Z
zaki 已提交
918 919 920 921 922
let actionName = 'action';
let parameters = {
    'setText': 'test text'
};
try {
923
    rootElement.performAction(actionName, parameters, (err, data) => {
Z
zaki 已提交
924
        if (err) {
925
            console.error('failed to perform action, because ' + JSON.stringify(err));
Z
zaki 已提交
926 927 928 929
            return;
        }
        console.info('perform action success');
    });
930 931
} catch (exception) {
    console.log('failed to perform action, because ' + JSON.stringify(exception));
Z
zaki 已提交
932 933 934
}
```
## findElement('content')
Z
zaki 已提交
935

936
findElement(type: 'content', condition: string): Promise\<Array\<AccessibilityElement>>;
Z
zaki 已提交
937

938
根据节点内容查询所有节点元素,使用Promise异步回调。
Z
zaki 已提交
939 940 941 942 943

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

944
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
945 946 947 948 949 950 951 952 953 954 955 956 957
| ----------- | ---------------------------------------- | ---- | -------------- |
| type | string | 是    | 固定为'content', 表示查找的类型为节点元素内容。     |
| condition | string | 是    | 表示查找的条件。     |

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
| Promise&lt;Array&lt;AccessibilityElement&gt;&gt; | Promise对象,返回满足指定查询关键字的所有节点元素。 |

**示例:**

```ts
958
let rootElement;
Z
zaki 已提交
959 960 961 962
let type = 'content';
let condition = 'keyword';
let elements;
try {
963
    rootElement.findElement(type, condition).then((data) => {
Z
zaki 已提交
964 965 966
        elements = data;
        console.log('find element success');
    }).catch((err) => {
967
        console.log('failed to find element, because '  + JSON.stringify(err));
Z
zaki 已提交
968
    });
969 970
} catch (exception) {
    console.log('failed to find element, because ' + JSON.stringify(exception));
Z
zaki 已提交
971 972 973 974 975 976 977
}
```
## findElement('content')

findElement(type: 'content', condition: string, callback: AsyncCallback\<Array\<AccessibilityElement>>): void;

根据节点内容查询所有节点元素。
Z
zaki 已提交
978 979 980 981 982

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

983
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
984 985 986
| ----------- | ---------------------------------------- | ---- | -------------- |
| type | string | 是    | 固定为'content',表示查找的类型为节点元素内容。     |
| condition | string | 是    | 表示查找的条件。     |
Z
zaki 已提交
987 988 989 990 991
| callback | AsyncCallback&lt;Array&lt;AccessibilityElement&gt;&gt; | 是    | 回调函数,返回满足指定查询关键字的所有节点元素。 |

**示例:**

```ts
992
let rootElement;
Z
zaki 已提交
993 994 995 996
let type = 'content';
let condition = 'keyword';
let elements;
try {
997
    rootElement.findElement(type, condition, (err, data) => {
Z
zaki 已提交
998
        if (err) {
999
            console.error('failed to find element, because ' + JSON.stringify(err));
Z
zaki 已提交
1000 1001 1002 1003 1004
            return;
        }
        elements = data;
        console.info('find element success');
    });
1005 1006
} catch (exception) {
    console.log('failed to find element, because ' + JSON.stringify(exception));
Z
zaki 已提交
1007 1008 1009 1010 1011 1012
}
```
## findElement('focusType')

findElement(type: 'focusType', condition: FocusType): Promise\<AccessibilityElement>;

1013
根据焦点元素类型查询节点元素,使用Promise异步回调。
Z
zaki 已提交
1014 1015 1016 1017 1018

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

1019
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
1020 1021 1022
| ----------- | ---------------------------------------- | ---- | -------------- |
| type | string | 是    | 固定为'focusType', 表示查询的类型为节点的焦点元素类型。     |
| condition | [FocusType](#focustype) | 是    | 表示查询焦点元素的类型。     |
Z
zaki 已提交
1023 1024 1025 1026 1027

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
Z
zaki 已提交
1028
| Promise&lt;AccessibilityElement&gt; | Promise对象,返回满足指定查询焦点元素类型的节点元素。 |
Z
zaki 已提交
1029 1030 1031 1032

**示例:**

```ts
1033
let rootElement;
Z
zaki 已提交
1034 1035
let type = 'focusType';
let condition = 'normal';
1036
let element;
Z
zaki 已提交
1037
try {
1038 1039
    rootElement.findElement(type, condition).then((data) => {
        element = data;
Z
zaki 已提交
1040
        console.log('find element success');
Z
zaki 已提交
1041
    }).catch((err) => {
1042
        console.log('failed to find element, because '  + JSON.stringify(err));
Z
zaki 已提交
1043
    });
1044 1045
} catch (exception) {
    console.log('failed to find element, because ' + JSON.stringify(exception));
Z
zaki 已提交
1046 1047 1048 1049 1050 1051
}
```
## findElement('focusType')

findElement(type: 'focusType', condition: FocusType, callback: AsyncCallback\<AccessibilityElement>): void;

1052
根据焦点元素类型查询节点元素,使用callback异步回调。
Z
zaki 已提交
1053 1054 1055 1056 1057

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

1058
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
1059 1060 1061 1062 1063 1064 1065 1066
| ----------- | ---------------------------------------- | ---- | -------------- |
| type | string | 是    | 固定为'focusType', 表示查询的类型为节点的焦点元素类型。     |
| condition | [FocusType](#focustype) | 是    | 表示查询焦点元素的类型。     |
| callback | AsyncCallback&lt;AccessibilityElement&gt; | 是    | 回调函数,返回满足指定查询焦点元素类型的节点元素。 |

**示例:**

```ts
1067
let rootElement;
Z
zaki 已提交
1068 1069
let type = 'focusType';
let condition = 'normal';
1070
let element;
Z
zaki 已提交
1071
try {
1072
    rootElement.findElement(type, condition, (err, data) => {
Z
zaki 已提交
1073
        if (err) {
1074
            console.error('failed to find element, because ' + JSON.stringify(err));
Z
zaki 已提交
1075 1076
            return;
        }
1077
        element = data;
Z
zaki 已提交
1078 1079
        console.info('find element success');
    });
1080 1081
} catch (exception) {
    console.log('failed to find element, because ' + JSON.stringify(exception));
Z
zaki 已提交
1082 1083 1084 1085 1086 1087
}
```
## findElement('focusDirection')

findElement(type: 'focusDirection', condition: FocusDirection): Promise\<AccessibilityElement>;

1088
根据下一焦点元素方向查询节点元素,使用Promise异步回调。
Z
zaki 已提交
1089 1090 1091 1092 1093

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

1094
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107
| ----------- | ---------------------------------------- | ---- | -------------- |
| type | string | 是    | 固定为'focusDirection', 表示查询的类型为节点的下一焦点元素方向。     |
| condition | [FocusDirection](#focusdirection) | 是    | 表示查询下一焦点元素的方向。     |

**返回值:**

| 类型                                       | 说明                       |
| ---------------------------------------- | ------------------------ |
| Promise&lt;AccessibilityElement&gt; | Promise对象,返回满足指定查询下一焦点元素方向的节点元素。 |

**示例:**

```ts
1108
let rootElement;
Z
zaki 已提交
1109 1110
let type = 'focusDirection';
let condition = 'up';
1111
let element;
Z
zaki 已提交
1112
try {
1113 1114
    rootElement.findElement(type, condition).then((data) => {
        element = data;
Z
zaki 已提交
1115 1116
        console.log('find element success');
    }).catch((err) => {
1117
        console.log('failed to find element, because '  + JSON.stringify(err));
Z
zaki 已提交
1118
    });
1119 1120
} catch (exception) {
    console.log('failed to find element, because ' + JSON.stringify(exception));
Z
zaki 已提交
1121 1122 1123 1124 1125 1126
}
```
## findElement('focusDirection')

findElement(type: 'focusDirection', condition: FocusDirection, callback: AsyncCallback\<AccessibilityElement>): void;

1127
根据下一焦点元素方向查询所有节点元素,使用callback异步回调。
Z
zaki 已提交
1128 1129 1130 1131 1132

**系统能力:**  SystemCapability.BarrierFree.Accessibility.Core

**参数:**

1133
| 参数名         | 类型                                     | 必填   | 说明             |
Z
zaki 已提交
1134 1135 1136 1137 1138 1139 1140 1141
| ----------- | ---------------------------------------- | ---- | -------------- |
| type | string | 是    | 固定为'focusDirection', 表示查询的类型为节点的下一焦点元素方向。     |
| condition | [FocusDirection](#focusdirection) | 是    | 表示下一查询焦点元素的方向。     |
| callback | AsyncCallback&lt;AccessibilityElement&gt; | 是    | 回调函数,返回满足指定查询下一焦点元素方向的节点元素。 |

**示例:**

```ts
1142
let rootElement;
Z
zaki 已提交
1143 1144 1145 1146
let type = 'focusDirection';
let condition = 'up';
let elements;
try {
1147
    rootElement.findElement(type, condition, (err, data) => {
Z
zaki 已提交
1148
        if (err) {
1149
            console.error('failed to find element, because ' + JSON.stringify(err));
Z
zaki 已提交
1150 1151 1152 1153
            return;
        }
        elements = data;
        console.info('find element success');
Z
zaki 已提交
1154
    });
1155 1156
} catch (exception) {
    console.log('failed to find element, because ' + JSON.stringify(exception));
Z
zaki 已提交
1157 1158
}
```