AccessibilityExtensionContext (辅助功能扩展上下文)(系统接口)

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

辅助功能扩展上下文模块提供辅助功能扩展的上下文环境的能力,包括允许配置辅助应用关注信息类型、查询节点信息、手势注入等。

说明:

使用说明

在使用AccessibilityExtensionContext功能前,需要先通过AccessibilityExtensionAbility子类实例获取一个AccessibilityExtensionContext的实例。

import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit';

class EntryAbility extends AccessibilityExtensionAbility {
  onConnect(): void {
    let axContext = this.context; 
  } 
}

Parameter20+

无障碍节点元素执行特定操作时,为操作提供具体设置的参数值。 详见无障碍节点元素可执行的操作

系统接口:此接口为系统接口。

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

名称 类型 只读 可选 说明
setText string 设置组件文本时文本内容。
selectTextBegin string 选定组件内文本时的起始坐标,如:'2'。
selectTextEnd string 选定组件内文本时的结束坐标,如:'8'。
selectTextInForWard boolean 表示选定组件内文本时是否向前选择。true表示向前选择,false表示不向前选择。
offset string 设置光标的偏移量,如:'1'。
spanId string 对超链接文本进行点击操作时文本编号。
scrollType string 组件滚动类型,包括'fullScreen'(全屏)和'halfScreen'(半屏)。

例如:选中文本输入框中index从0到7的字符时,executeAction(AccessibilityAction.SET_SELECTION, parameter)方法设置的参数如下:

let p : Parameter = { selectTextBegin: '0', selectTextEnd: '8', selectTextInForWard: true }

AccessibilityGrid20+

辅助功能网格信息。 详见AccessibilityElement.currentItem

系统接口:此接口为系统接口。

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

名称 类型 只读 可选 说明
rowIndex number 网格行索引。
columnIndex number 网格列索引。

AccessibilitySpan20+

辅助功能超链接文本信息。 详见AccessibilityElement.spans

系统接口:此接口为系统接口。

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

名称 类型 只读 可选 说明
spanId number 超链接文本编号。
spanText string 超链接文本的文本内容。
accessibilityText string 超链接文本的辅助功能文本。
accessibilityDescription string 超链接文本的辅助功能描述。
accessibilityLevel string 超链接文本的辅助功能级别。

FocusRule23+

type FocusRule = 'bypassSelf' | 'bypassSelfDescendants' | 'checkSelf' | 'checkSelfBypassDescendants'

表示查找可聚焦节点时,如何判断起始节点及其子节点的聚焦能力。

系统接口:此接口为系统接口。

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

类型 说明
'bypassSelf' 表示跳过对起始节点的检查,只检查其子节点。值固定为'bypassSelf'字符串。
'bypassSelfDescendants' 表示跳过对起始节点及其所有子节点的检查。值固定为'bypassSelfDescendants'字符串。
'checkSelf' 表示先检查起始节点是否可以聚焦,如果可以则直接使用;如果不能聚焦,则继续检查其子节点。值固定为'checkSelf'字符串。
'checkSelfBypassDescendants' 表示先检查起始节点是否可以聚焦,如果可以则使用;如果不能聚焦,则跳过所有子节点的检查。值固定为'checkSelfBypassDescendants'字符串。

FocusCondition23+

type FocusCondition = 'forward' | 'backward' | 'findLast' | 'getForwardScrollAncestor' | 'getBackwardScrollAncestor' | 'getScrollableAncestor'

表示查询可聚焦节点方式。

系统接口:此接口为系统接口。

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

类型 说明
'forward' 表示当前节点下一个可聚焦节点,值固定为'forward' 字符串。
'backward' 表示当前节点上一个可聚焦节点,值固定为'backward'字符串。
'findLast' 表示查找起始节点的子节点中的最后一个节点,值固定为'findLast'字符串。
'getForwardScrollAncestor' 表示查找支持前向滚动父组件,值固定为'getForwardScrollAncestor'字符串。
'getBackwardScrollAncestor' 表示查找支持后向滚动父组件,值固定为'getBackwardScrollAncestor'字符串。
'getScrollableAncestor' 表示查找支持任意滚动父组件,值固定为'getScrollableAncestor'字符串。

FocusMoveResult23+

查询无障碍节点返回值类型。

系统接口:此接口为系统接口。

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

名称 类型 只读 可选 说明
target Array<AccessibilityElement> 查询返回的无障碍节点。
result FocusMoveResultCode 查询无障碍节点返回结果类型。

startAbility12+

startAbility(want: Want): Promise<void>

提供拉起前台页面的能力。使用Promise异步回调。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
want Want Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 The application does not have the permission required to call the API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { Want } from '@kit.AbilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    let want: Want = {
      bundleName: 'com.huawei.hmos.photos',
      abilityName: 'com.huawei.hmos.photos.MainAbility'
    }

    this.context.startAbility(want).then(() => {
      console.info(`startAbility Succeeded enable ability`);
    }).catch((err: BusinessError) => {
      console.error(`startAbility failed to enable ability, Code is ${err.code}, message is ${err.message}`);
    });
  }
}

AccessibilityExtensionContext.getElements18+

getElements(windowId: number, elementId?: number): Promise<Array<AccessibilityElement>>

提供批量查询节点的能力。使用Promise异步回调。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
windowId number 表示查询的窗口id。
elementId number 表示查询的节点id。传入此参数表示查询当前节点下的所有子节点列表,不传则查询窗口下所有节点。默认值为-1。

返回值:

类型 说明
Promise<Array<AccessibilityElement>> Promise对象,返回当前窗口或者当前节点下的所有子节点列表。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
202 Permission verification failed. A non-system application calls a system API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
9300003 No accessibility permission to perform the operation.

示例:

import {
  AccessibilityElement,
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    let windowId: number = 10;
    let elementId: number = 10;

    this.context.getElements(windowId, elementId).then((data:AccessibilityElement[]) => {
      console.info(`Succeeded in find element, ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`);
    });
  }
}

AccessibilityExtensionContext.getDefaultFocusedElementIds18+

getDefaultFocusedElementIds(windowId: number): Promise<Array<number>>

提供查询应用自定义默认焦点的能力。使用Promise异步回调。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
windowId number 表示查询的窗口id。

返回值:

类型 说明
Promise<Array<number>> Promise对象,返回当前窗口下的自定义默认焦点列表。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
202 Permission verification failed. A non-system application calls a system API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
9300003 No accessibility permission to perform the operation.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    let windowId: number = 10;

    this.context.getDefaultFocusedElementIds(windowId).then((data: number[]) => {
      console.info(`Succeeded in get default focus, ${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
      console.error(`failed to get default focus, Code is ${err.code}, message is ${err.message}`);
    });
  }
}

AccessibilityExtensionContext.holdRunningLockSync20+

holdRunningLockSync(): void

持有RunningLock锁,持锁后,屏幕不会自动灭屏。

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    try {
      this.context.holdRunningLockSync();
    } catch (err) {
      console.error(`Failed to hold RunningLock, Code is ${err.code}, message is ${err.message}`);
    }
  }
}

AccessibilityExtensionContext.unholdRunningLockSync20+

unholdRunningLockSync(): void

释放RunningLock锁,恢复自动灭屏。

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    try {
      this.context.unholdRunningLockSync();
    } catch (err) {
      console.error(`Failed to hold RunningLock, Code is ${err.code}, message is ${err.message}`);
    }
  }
}

AccessibilityExtensionContext.on('preDisconnect')20+

on(type: 'preDisconnect', callback: Callback<void>): void

向无障碍服务注册回调函数,在无障碍服务关闭该无障碍扩展服务前会执行该回调函数。使用callback异步回调。

此注册函数需要与notifyDisconnect配合使用,如果不调用notifyDisconnect,则默认等待30秒后,无障碍扩展服务会自动关闭。

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
type string 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。
callback Callback<void> 回调函数,在无障碍扩展服务即将关闭时回调。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    try {
      this.context.on('preDisconnect', () => {
        console.info(`To do something before accessibilityExtension disconnect.`);
      });
    } catch (err) {
      console.error(`Failed to register, code is ${err.code}, message is ${err.message}`);
    }
  }
}

AccessibilityExtensionContext.off('preDisconnect')20+

off(type: 'preDisconnect', callback?: Callback<void>): void

取消已经向无障碍服务注册的预关闭回调函数,无障碍服务关闭该扩展服务前不再执行该回调。使用callback异步回调。

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
type string 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。
callback Callback<void> 回调函数,取消指定无障碍扩展服务即将关闭时的回调。需与on('preDisconnect')的callback一致。缺省时,表示注销所有已注册事件。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    try {
      this.context.off('preDisconnect', () => {
        console.info(`To do something before accessibilityExtension disconnect.`);
      });
    } catch (err) {
      console.error(`Failed to unRegister, code is ${err.code}, message is ${err.message}`);
    }
  }
}

AccessibilityExtensionContext.notifyDisconnect20+

notifyDisconnect(): void

通知无障碍服务可以关闭该无障碍扩展服务。

此函数需要与注册预关闭接口on('preDisconnect')配合使用,如果没有调用过注册预关闭函数,直接调用此函数不生效。

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed. The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    try {
      this.context.notifyDisconnect();
    } catch (err) {
      console.error(`Failed to notify accessibility, code is ${err.code}, message is ${err.message}`);
    }
  }
}

getAccessibilityFocusedElement20+

getAccessibilityFocusedElement(): Promise<AccessibilityElement>;

获取当前获得焦点的元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

返回值:

类型 描述
Promise<AccessibilityElement> Promise对象,返回当前获得焦点的元素。

错误码: 以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300003 No accessibility permission to perform the operation.
9300006 The target application failed to connect to accessibility service.

示例:

import {
  AccessibilityElement,
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    this.context.getAccessibilityFocusedElement().then((element: AccessibilityElement) => {
      console.info(`Succeeded in get accessibility focused element, ${element.bundleName}`);
    }).catch((err: BusinessError) => {
      console.error(`failed to get accessibility focused element, Code is ${err.code}, message is ${err.message}`);
    });
  }
}

getRootInActiveWindow20+

getRootInActiveWindow(windowId ?: number): Promise<AccessibilityElement>;

获取活动窗口根元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
windowId number 表示查询的窗口ID。

返回值:

类型 描述
Promise<AccessibilityElement> Promise对象,返回活动窗口的根元素。

错误码: 以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300003 No accessibility permission to perform the operation.
9300006 The target application failed to connect to accessibility service.

示例:

import {
  AccessibilityElement,
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    let windowId: number = 0;

    this.context.getRootInActiveWindow(windowId).then((element: AccessibilityElement) => {
      console.info(`Succeeded in get root inactive window element, ${element.bundleName}`);
    }).catch((err: BusinessError) => {
      console.error(`failed to get root inactive window element, Code is ${err.code}, message is ${err.message}`);
    });
  }
}

getAccessibilityWindowsSync20+

getAccessibilityWindowsSync(displayId?: number): Array<AccessibilityElement>

获取窗口列表。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
displayId number 显示ID。如果未提供此参数,则表示默认displayId。

返回值:

类型 描述
Array<AccessibilityElement> 窗口列表。

错误码: 以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300003 No accessibility permission to perform the operation.

示例:

import {
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    try {
      let displayId: number = 0;
      let windowList = this.context.getAccessibilityWindowsSync(displayId);
      if (windowList) {
        for (let window of windowList) {
          console.info(`getAccessibilityWindowsSync: windowId: ${window.windowId}`);
        }
      }
    } catch (err) {
      console.error(`[FAILED] getAccessibilityWindowsSync: ${err.code} ${err.message}`)
    }
  }
}

AccessibilityElement12+

无障碍节点元素。在调用 AccessibilityElement 的 API 之前,应该调用 AccessibilityExtensionContext.getAccessibilityFocusedElement()AccessibilityExtensionContext.getRootInActiveWindow() 来获取一个 AccessibilityElement 实例。

系统接口:此接口为系统接口。

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

属性

名称 类型 只读 可选 描述
accessibilityFocused20+ boolean 表示元素是否因无障碍目的获得焦点。true表示已获得焦点,false表示未获得焦点。
默认值:false。
bundleName20+ string 包名。
checkable20+ boolean 元素是否可勾选。true表示可勾选,false表示不可勾选。
默认值:false。
checked20+ boolean 元素是否已勾选。true表示已勾选,false表示未勾选。
默认值:false。
clickable20+ boolean 元素是否可点击。true表示可点击,false表示不可点击。
默认值:false。
componentId20+ number 元素所属组件的ID。
默认值:-1。
componentType20+ string 元素所属组件的类型。
contents20+ Array<string> 元素显示内容。
currentIndex20+ number 当前项的索引。
默认值:0。
description20+ string 元素的描述信息。
editable20+ boolean 元素是否可编辑。true表示可编辑,false表示不可编辑。
默认值:false。
endIndex20+ number 屏幕上显示的最后一个列表项的索引。
默认值:0。
error20+ string 元素的错误状态。
focusable20+ boolean 元素是否可获得焦点。true表示可获得焦点,false表示不可获得焦点。
默认值:false。
hintText20+ string 提示文本。
inputType20+ number 输入文本的类型。
默认值:0。
inspectorKey20+ string 检查器键。
isActive20+ boolean 元素是否处于活动状态。true表示活动状态,false表示非活动状态。
默认值:true。
isEnable20+ boolean 元素是否启用。true表示启用,false表示未启用。
默认值:false。
isHint20+ boolean 元素是否为提示信息。true表示元素是提示信息,false表示非提示信息。
默认值:false。
isFocused20+ boolean 表示元素是否已获得焦点。true表示已获得焦点,false表示未获得焦点。
默认值:false。
isPassword20+ boolean 元素是否为密码。true表示元素是密码,false表示不是密码。
默认值:false。
isVisible20+ boolean 元素是否可见。true表示元素可见,false表示元素不可见。
默认值:false。
itemCount20+ number 项目总数。
默认值:0。
lastContent20+ string 最后一项内容。
layer20+ number 元素的显示层级。
longClickable20+ boolean 元素是否可长按。true表示可长按,false表示不可长按。
默认值:false。
pageId20+ number 页面ID。
默认值:-1。
pluralLineSupported20+ boolean 表示元素是否支持多行文本。true表示支持,false表示不支持。
默认值:false。
rect20+ Rect 元素的区域。
resourceName20+ string 元素的资源名称。
screenRect20+ Rect 元素的显示区域。
scrollable20+ boolean 元素是否可滚动。true表示元素可滚动,false表示不可滚动。
默认值:false。
selected20+ boolean 元素是否已选中。true表示已选中,false表示未选中。
默认值:false。
startIndex20+ number 屏幕上第一个列表项的索引。
默认值:0。
text20+ string 元素的文本内容。
textLengthLimit20+ number 元素的最大文本长度。
textMoveUnit20+ accessibility.TextMoveUnit 文本朗读时的移动单位。
默认值:0。
triggerAction20+ accessibility.Action 触发元素事件的操作。
type20+ WindowType 元素的窗口类型。
valueMax20+ number 最大值。
默认值:0。
valueMin20+ number 最小值。
默认值:0。
valueNow20+ number 当前值。
默认值:0。
windowId20+ number 窗口ID。
默认值:-1。
offset20+ number 内容区域相对于可滚动组件(如List和Grid)顶部坐标的像素偏移量。
默认值:0。
textType20+ string 元素的无障碍文本类型,由组件的accessibilityTextHint属性配置。
accessibilityText20+ string 元素的无障碍文本信息。
accessibilityStateDescription23+ string 元素的自定义无障碍状态播报文本信息。
模型约束:此接口仅可在Stage模型下使用。
hotArea20+ Rect 元素的可触摸区域。
customComponentType20+ string 自定义组件类型。
accessibilityNextFocusId20+ number 下一个要获得焦点的组件的ID。
默认值:-1。
accessibilityPreviousFocusId20+ number 上一个要获得焦点的组件的ID。
默认值:-1。
extraInfo20+ string 元素的额外信息。值为JSON字符串。
accessibilityScrollable20+ boolean 元素是否因无障碍目的而可滚动。此属性优先级高于scrollable。
true表示元素可滚动,false表示元素不可滚动。
默认值:true。
supportedActionNames20+ Array<string> 支持的操作名称。
accessibilityGroup20+ boolean 元素是否为无障碍组。true表示元素是无障碍组,false表示元素不是无障碍组。
默认值:false。
accessibilityLevel20+ string 组件的无障碍级别。
'auto':当前组件由无障碍分组服务和ArkUI进行综合判断组件是否可被辅助功能识别。
'yes':当前组件可被辅助功能识别。
'no':当前组件不可被辅助功能识别。
'no-hide-descendants':当前组件及其所有子组件不可被辅助功能识别。
navDestinationId20+ number 组件的导航目标ID。
currentItem20+ AccessibilityGrid 组件网格中的当前项。
spans20+ AccessibilitySpan[] 组件的跨度数组。
accessibilityVisible20+ boolean 组件是否无障碍可见。true表示可见,false表示不可见。
mainWindowId20+ number 组件的主窗口ID。
clip20+ boolean 组件是否需要裁剪。true表示需要裁剪,false表示不需要裁剪。
parentId20+ number 组件的父元素ID。
childrenIds20+ Array<number> 组件的子元素ID列表。

示例:

import {
  AccessibilityElement,
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }

    let windowId: number = 10;

    this.context.getRootInActiveWindow(windowId).then((element: AccessibilityElement) => {
      console.info("AccessibilityElement.checkable: " + element.checkable)
      console.info("AccessibilityElement.checked: " + element.checked)
      console.info("AccessibilityElement.clickable: " + element.clickable)
      console.info("AccessibilityElement.componentId: " + element.componentId)
      console.info("AccessibilityElement.componentType: " + element.componentType)
      console.info("AccessibilityElement.contents: " + element.contents)
      console.info("AccessibilityElement.currentIndex: " + element.currentIndex)
      console.info("AccessibilityElement.description: " + element.description)
      // ....
    }).catch((err: BusinessError) => {
      console.error(`getRootInActiveWindow failed, code: ${err.code}, message: ${err.message}`);
    })
  }
}

enableScreenCurtain12+

enableScreenCurtain(isEnable: boolean): void

提供开启/关闭幕帘屏的能力。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
isEnable boolean true表示打开幕帘屏功能,false表示关闭幕帘屏功能。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
202 Permission verification failed. A non-system application calls a system API.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.
9300003 No accessibility permission to perform the operation.

示例:

import {
  AccessibilityElement,
  AccessibilityEvent, 
  AccessibilityExtensionContext
} from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class AccessibilityManager {
  private static instance: AccessibilityManager;
  context?: AccessibilityExtensionContext;

  static getInstance(): AccessibilityManager {
    if (!AccessibilityManager.instance) {
      AccessibilityManager.instance = new AccessibilityManager();
    }
    return AccessibilityManager.instance;
  }

  onStart(context: AccessibilityExtensionContext) {
    this.context = context;
  }

  onStop() {
    this.context = undefined;
  }

  onEvent(accessibilityEvent: AccessibilityEvent): void {
    if (!this.context) {
      console.error('context is not available!');
      return;
    }
    this.context.getRootInActiveWindow().then((rootElement: AccessibilityElement) => {
      console.info(`Succeeded in get root element of the window, ${JSON.stringify(rootElement)}`);
      rootElement.enableScreenCurtain(true);
      console.info(`Succeeded in enableScreenCurtain`);
    }).catch((err: BusinessError) => {
      console.error(`failed to enableScreenCurtain, Code is ${err.code}, message is ${err.message}`);
    });
  }
}

findElement('elementId')12+

findElement(type: 'elementId', condition: number): Promise<AccessibilityElement>

根据elementId查询当前活动窗口下的节点元素。使用Promise异步回调。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
type string 固定为'elementId', 表示根据elementId查询当前活动窗口下的节点元素。
condition number 表示要查询的节点元素的elementId。

返回值:

类型 说明
Promise<AccessibilityElement> Promise对象,返回满足指定查询条件的节点元素。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:

import { AccessibilityElement } from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

//elementId为10
let condition = 10;

// rootElement是AccessibilityElement的实例
rootElement.findElement('elementId', condition).then((data: AccessibilityElement) => {
  console.info(`Succeeded in find element, ${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
  console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`);
});

findElement('textType')12+

findElement(type: 'textType', condition: string): Promise<Array<AccessibilityElement>>

根据节点配置的accessibilityTextHint无障碍文本类型查询所有节点元素,使用Promise异步回调。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
type string 固定为'textType', 表示根据文本类型查找节点元素。
condition string 表示查找的条件。

返回值:

类型 说明
Promise<Array<AccessibilityElement>> Promise对象,返回满足指定查询关键字的所有节点元素。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:

import { AccessibilityElement } from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

// condition的内容需要与目标组件accessibilityTextHint属性的type字段值保持一致
let condition = 'location'; 

// rootElement是AccessibilityElement的实例
rootElement.findElement('textType', condition).then((data: AccessibilityElement[]) => {
  console.info(`Succeeded in find element, ${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
  console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`);
});

getCursorPosition12+

getCursorPosition(): Promise<number>

获取文本组件中光标位置,使用Promise异步回调。

系统接口:此接口为系统接口。

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

返回值:

类型 说明
Promise<number> Promise对象,返回当前光标所处位置。

示例:

import { BusinessError } from '@kit.BasicServicesKit';

// rootElement是AccessibilityElement的实例
rootElement.getCursorPosition().then((data: number) => {
  console.info(`Succeeded in getCursorPosition, ${data}`);
}).catch((err: BusinessError) => {
  console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`);
});

getCursorPosition12+

getCursorPosition(callback: AsyncCallback<number>): void

获取文本组件中光标位置,使用callback异步回调。

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
callback AsyncCallback<number> 回调函数,表示文本组件中光标位置。

示例:

import { BusinessError } from '@kit.BasicServicesKit';

// rootElement是AccessibilityElement的实例
rootElement.getCursorPosition((err: BusinessError, data: number) => {
  if (err && err.code) {
    console.error(`failed to getCursorPosition, Code is ${err.code}, message is ${err.message}`);
    return;
  }
  console.info(`Succeeded in getCursorPosition, ${data}`);
});

executeAction20+

executeAction(action: AccessibilityAction, parameters?: Parameter): Promise<void>

根据action指定的操作类型和parameters传入的参数,执行特定操作。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

参数名 类型 必填 说明
action AccessibilityAction 无障碍节点可执行的操作。
parameters Parameter 执行操作时设置的参数值,默认为空。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300005 This action is not supported.

示例:

//无参数Action示例:
import { AccessibilityAction } from '@kit.AccessibilityKit';

// rootElement是AccessibilityElement的实例
// Action描述中无明确要求的,均为无参数Action
try {
  rootElement.executeAction(AccessibilityAction.CLICK);
  console.info(`Succeeded in perform action CLICK`);
}catch (error){
  console.error(`failed to perform action CLICK, Code is ${error?.code}, message is ${error?.message}`);
}
//有参数Action示例:
import { AccessibilityAction, Parameter } from '@kit.AccessibilityKit';

try {
  // selectTextBegin: 表示选择起始位置
  // selectTextEnd: 表示选择结束位置
  // selectTextInForWard: true表示为前光标,false表示为后光标
  let p : Parameter = { selectTextBegin: '0', selectTextEnd: '8', selectTextInForWard: true }
  // rootElement是AccessibilityElement的实例
  // setSelection示例代码
  rootElement.executeAction(AccessibilityAction.SET_SELECTION, p);
  console.info(`Succeeded in perform action SET_SELECTION`);
}catch (error){
  console.error(`failed to perform action SET_SELECTION, Code is ${error?.code}, message is ${error?.message}`);
}
//有参数Action示例:
import { AccessibilityAction, Parameter } from '@kit.AccessibilityKit';

try {
  // offset: 表示光标的设置位置
  let p : Parameter = { offset: '1' }
  // rootElement是AccessibilityElement的实例
  // setCursorPosition示例代码
  rootElement.executeAction(AccessibilityAction.SET_CURSOR_POSITION, p);
  console.info(`Succeeded in perform action SET_CURSOR_POSITION`);
}catch (error){
  console.error(`failed to perform action SET_CURSOR_POSITION, Code is ${error?.code}, message is ${error?.message}`);
}

getParent20+

getParent(): Promise<AccessibilityElement>

获取无障碍节点元素的父元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

返回值:

类型 描述
Promise<AccessibilityElement> Promise对象,返回当前元素的父元素。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import { AccessibilityElement } from '@kit.AccessibilityKit';

axContext.getAccessibilityFocusedElement().then((element: AccessibilityElement) => {
  console.info(`element parent id: ${element.parentId}`);
  element.getParent().then((parent: AccessibilityElement) => {
    console.info(`parent element's parent id: ${parent.parentId}`);
  }).catch((err: BusinessError) => {
    console.error(`getParent failed, code: ${err.code}, message: ${err.message}`);
  })
}).catch((err: BusinessError) => {
  console.error(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`);
})

getChildren20+

getChildren(): Promise<Array<AccessibilityElement>>

获取元素的子元素列表。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

返回值:

类型 描述
Promise<Array<AccessibilityElement>> Promise对象,返回当前元素的子元素列表。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import { AccessibilityElement } from '@kit.AccessibilityKit';

axContext.getAccessibilityFocusedElement().then((element: AccessibilityElement) => {
  console.info(`element childrenIds: ${element.childrenIds}`);
  element.getChildren().then((children: AccessibilityElement[]) => {
    console.info(`children element's size: ${children.length}`);
  }).catch((err: BusinessError) => {
    console.error(`getChildren failed, code: ${err.code}, message: ${err.message}`);
  })
}).catch((err: BusinessError) => {
  console.error(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`);
})

getRoot20+

getRoot(): Promise<AccessibilityElement>

获取活动窗口中的根元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

返回值:

类型 描述
Promise<AccessibilityElement> Promise对象,返回活动窗口中的根元素。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:

import { AccessibilityElement } from '@kit.AccessibilityKit';

let windows: AccessibilityWindow[] = axContext.getAccessibilityWindowsSync()
for (let window of windows) {
  console.info(`window id: ${window.windowId}`);
  window.getRoot().then((root: AccessibilityElement) => {
    console.info(`root element's componentId: ${root.componentId}`);
  }).catch((err: BusinessError) => {
    console.error(`getRoot failed, code: ${err.code}, message: ${err.message}`);
  })
}

findElementByContent20+

findElementByContent(condition: string): Promise<Array<AccessibilityElement>>

根据内容查找元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

名称 类型 必填 描述
condition string 内容。

返回值:

类型 描述
Promise<Array<AccessibilityElement>> Promise对象,返回包含指定内容的元素列表。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300006 The target application failed to connect to accessibility service.

示例:

// Page.ets
  build() {
    Text('Connect')
        .id('connect')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
// ...

// AccessibilityExtAbility.ets
import { AccessibilityElement } from '@kit.AccessibilityKit';

let windowId: number = 10;

axContext.getRootInActiveWindow(windowId).then((root: AccessibilityElement) => {
    root.findElementByContent('connect').then((elements: AccessibilityElement[]) => {
        console.info("findElementByContent size=" + elements.length)
    }).catch((err: BusinessError) => {
        console.error(`findElementByContent failed, code: ${err.code}, message: ${err.message}`);
    })
}).catch((err: BusinessError) => {
  console.error(`getRootInActiveWindow failed, code: ${err.code}, message: ${err.message}`);
})

findElementByFocusDirection20+

findElementByFocusDirection(condition: FocusDirection): Promise<AccessibilityElement>

根据焦点方向查找元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

名称 类型 必填 描述
condition FocusDirection 焦点方向。

返回值:

类型 描述
Promise<AccessibilityElement> Promise对象,返回指定焦点方向的元素。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300006 The target application failed to connect to accessibility service.

示例:

// Page.ets
// Click TextInput and then it is the accessibility focus element, up direction element is Text#connect
  build() {
    Text('Connect')
        .id('connect')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)

    TextInput({ placeholder: 'please input...' })
        .id('text_input')
        .fontSize($r('app.float.page_text_font_size'))
// ...

// AccessibilityExtAbility.ets
import { AccessibilityElement } from '@kit.AccessibilityKit';

axContext.getAccessibilityFocusedElement().then((focus: AccessibilityElement) => {
    focus.findElementByFocusDirection('up').then((element: AccessibilityElement) => {
        console.info("findElementByFocusDirection UP componentId: " + element.componentId);
    }).catch((err: BusinessError) => {
        console.error(`findElementByFocusDirection UP failed, code: ${err.code}, message: ${err.message}`);
    })
}).catch((err: BusinessError) => {
  console.error(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`);
})

findElementsByAccessibilityHintText20+

findElementsByAccessibilityHintText(condition: string): Promise<Array<AccessibilityElement>>

根据提示文本查找元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

名称 类型 必填 描述
condition string 提示文本。

返回值:

类型 描述
Promise<Array<AccessibilityElement>> Promise对象,返回包含指定提示文本的元素列表。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300006 The target application failed to connect to accessibility service.

示例:

// Page.ets
  build() {
    Text('Connect')
        .id('connect')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)

    TextInput({ placeholder: 'please input...' })
        .id('text_input')
        .fontSize($r('app.float.page_text_font_size'))
        .accessibilityTextHint('location')
// ...

// AccessibilityExtAbility.ets
import { AccessibilityElement } from '@kit.AccessibilityKit';

let windowId: number = 10;

axContext.getRootInActiveWindow(windowId).then((root: AccessibilityElement) => {
    root.findElementsByAccessibilityHintText('location').then((elements: AccessibilityElement[]) => {
        console.info("findElementsByAccessibilityHintText size=" + elements.length)
    }).catch((err: BusinessError) => {
        console.error(`findElementsByAccessibilityHintText failed, code: ${err.code}, message: ${err.message}`);
    })
}).catch((err: BusinessError) => {
  console.error(`getRootInActiveWindow failed, code: ${err.code}, message: ${err.message}`);
})

findElementById20+

findElementById(condition: number): Promise<AccessibilityElement>

根据元素 ID 查找元素。使用Promise异步回调。

权限: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

系统接口:此接口为系统接口。

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

参数:

名称 类型 必填 描述
condition number 元素 ID。

返回值:

类型 描述
Promise<AccessibilityElement> Promise对象,返回指定 ID 的元素。

错误码:

以下错误码的详细介绍请参见通用错误码无障碍子系统错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.
9300006 The target application failed to connect to accessibility service.

示例:

// Page.ets
// Click TextInput and then it is the accessibility focus element
  build() {
    Text('Connect')
        .id('connect')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)

    TextInput({ placeholder: 'please input...' })
        .id('text_input')
        .fontSize($r('app.float.page_text_font_size'))
// ...

// AccessibilityExtAbility.ets
import { AccessibilityElement } from '@kit.AccessibilityKit';

axContext.getAccessibilityFocusedElement().then((focus: AccessibilityElement) => {
    focus.findElementById(0).then((element: AccessibilityElement) => {
        console.info("findElementById componentId: " + element.componentId);
    }).catch((err: BusinessError) => {
        console.error(`findElementById failed, code: ${err.code}, message: ${err.message}`);
    })
}).catch((err: BusinessError) => {
  console.error(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`);
})

findElementsByCondition23+

findElementsByCondition(rule: FocusRule, condition: FocusCondition): Promise<FocusMoveResult>

查询满足条件的可聚焦节点。使用Promise异步回调。

系统接口:此接口为系统接口。

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

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

参数:

名称 类型 必填 描述
rule FocusRule 检查当前节点及其子节点的规则。
condition FocusCondition 表示查询可聚焦节点方式。

返回值:

类型 描述
Promise<FocusMoveResult> Promise对象,返回查询结果对象。

错误码:

以下错误码的详细介绍请参见通用错误码

错误码ID 错误信息
201 Permission verification failed.The application does not have the permission required to call the API.
202 Permission verification failed. A non-system application calls a system API.

示例:


import { AccessibilityElement } from '@kit.AccessibilityKit';

axContext.getAccessibilityFocusedElement().then((focus: AccessibilityElement) => {
    focus.findElementsByCondition("bypassSelf", "forward").then((res: FocusMoveResult) => {
        console.info("findElementsByCondition result: " + res.result);
    }).catch((err: BusinessError) => {
        console.error(`findElementsByCondition failed, code: ${err.code}, message: ${err.message}`);
    })
}).catch((err: BusinessError) => {
  console.error(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`);
})

ElementAttributeValues9+

节点元素具备的属性名称及属性值类型信息。

系统接口: 此接口为系统接口。

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

属性

名称 类型 只读 可选 说明
accessibilityStateDescription23+ string 元素的自定义无障碍状态播报文本信息。
模型约束:此接口仅可在Stage模型下使用。