diff --git a/zh-cn/application-dev/reference/apis-accessibility-kit/Readme-CN.md b/zh-cn/application-dev/reference/apis-accessibility-kit/Readme-CN.md index 9820c78210c5a9336a3ab9168b34b679dd5535b1..fde457fcdb95afc265872b2825092553eefd9ab6 100644 --- a/zh-cn/application-dev/reference/apis-accessibility-kit/Readme-CN.md +++ b/zh-cn/application-dev/reference/apis-accessibility-kit/Readme-CN.md @@ -7,7 +7,9 @@ - [@ohos.application.AccessibilityExtensionAbility (辅助功能扩展能力)](js-apis-application-accessibilityExtensionAbility.md) - [AccessibilityExtensionContext (辅助功能扩展上下文)](js-apis-inner-application-accessibilityExtensionContext.md) + - [@ohos.accessibility (辅助功能)(系统接口)](js-apis-accessibility-sys.md) - [@ohos.accessibility.config (系统辅助功能配置)(系统接口)](js-apis-accessibility-config-sys.md) + - [@ohos.application.AccessibilityExtensionAbility (辅助功能扩展能力)(系统接口)](js-apis-application-accessibilityExtensionAbility-sys.md) - [AccessibilityExtensionContext (辅助功能扩展上下文)(系统接口)](js-apis-inner-application-accessibilityExtensionContext-sys.md) - 错误码 diff --git a/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-accessibility-sys.md b/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-accessibility-sys.md new file mode 100755 index 0000000000000000000000000000000000000000..c368c184fcf9c673b4377176787f2c1f53d09d5d --- /dev/null +++ b/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-accessibility-sys.md @@ -0,0 +1,126 @@ +# @ohos.accessibility (辅助功能)(系统接口) + +本模块提供无障碍事件类型和无障碍节点元素可执行的操作。 + +> **说明:** +> +> - 本模块首批接口从 API version 20 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> - 当前页面仅包含本模块的系统接口。其他公开接口参见[@ohos.accessibility](js-apis-accessibility.md)。 + +## 导入模块 + +```ts +import { accessibility } from '@kit.AccessibilityKit'; +``` + + +## AccessibilityEventType + +无障碍事件类型。 + +**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core + + +| 名称 | 值 |说明| +| ---------------------------------------- | ---- | ---------------------- | +| TYPE_ACCESSIBILITY_FOCUS | 0 | 表示获得无障碍焦点。 | +| TYPE_ACCESSIBILITY_FOCUS_CLEAR | 1 | 表示清除无障碍焦点。 | +| TYPE_CLICK | 2 | 表示点击组件。 | +| TYPE_LONG_CLICK | 3 | 表示长按点击组件。 | +| TYPE_SELECT | 4 | 表示选择组件。 | +| TYPE_HOVER_ENTER | 5 | 表示悬停进入组件。 | +| TYPE_HOVER_EXIT | 6 | 表示悬停离开组件。 | +| TYPE_FOCUS | 7 | 表示组件获得焦点。 | +| TYPE_TEXT_UPDATE | 8 | 表示组件文本已更改。 | +| TYPE_TEXT_SELECTION_UPDATE | 9 | 表示组件选定文本已更改。 | +| TYPE_SCROLL | 10 | 表示滚动视图。 | +| TYPE_REQUEST_FOCUS_FOR_ACCESSIBILITY | 11 | 表示主动聚焦。 | +| TYPE_ANNOUNCE_FOR_ACCESSIBILITY | 12 | 表示主动播报。 | +| TYPE_REQUEST_FOCUS_FOR_ACCESSIBILITY_NOT_INTERRUPT | 13 | 表示主动聚焦不打断。 | +| TYPE_ANNOUNCE_FOR_ACCESSIBILITY_NOT_INTERRUPT | 14 | 表示主动播报不打断。 | +| TYPE_ELEMENT_INFO_CHANGE | 15 | 表示组件信息改变。 | +| TYPE_SCROLLING | 16 | 表示滚动视图中有item被滚出屏幕。 | +| TYPE_WINDOW_ADD | 17 | 表示添加窗口。 | +| TYPE_WINDOW_REMOVE | 18 | 表示删除窗口。 | +| TYPE_WINDOW_BOUNDS | 19 | 表示窗口边界改变。 | +| TYPE_WINDOW_ACTIVE | 20 | 表示切换窗口活动状态 | +| TYPE_WINDOW_FOCUS | 21 | 表示窗口焦点发生变化。 | +| TYPE_WINDOW_PROPERTY | 22 | 表示窗口属性变化事件。例如:透明度、大小等。 | +| TYPE_WINDOW_LAYER | 23 | 表示窗口层级变化。 | +| TYPE_TOUCH_BEGIN | 24 | 表示开始手指触摸事件。 | +| TYPE_TOUCH_END | 25 | 表示结束手指触摸事件。 | +| TYPE_PAGE_CONTENT_UPDATE |26| 表示页面内容刷新。| +| TYPE_PAGE_STATE_UPDATE |27| 表示页面状态刷新。| +| TYPE_PAGE_OPEN |28| 表示页面打开。| +| TYPE_PAGE_CLOSE |29| 表示页面关闭。| +| TYPE_SWIPE_LEFT |30| 表示向左的手势。 | +| TYPE_SWIPE_LEFT_THEN_RIGHT |31| 表示先向左再向右的手势。| +| TYPE_SWIPE_LEFT_THEN_UP |32| 表示先向左再向上的手势。| +| TYPE_SWIPE_LEFT_THEN_DOWN |33| 表示先向左再向下的手势。| +| TYPE_SWIPE_RIGHT |34| 表示向右的手势。 | +| TYPE_SWIPE_RIGHT_THEN_LEFT |35| 表示先向右再向左的手势。| +| TYPE_SWIPE_RIGHT_THEN_UP |36| 表示先向右再向上的手势。| +| TYPE_SWIPE_RIGHT_THEN_DOWN |37| 表示先向右再向下的手势。| +| TYPE_SWIPE_UP |38| 表示向上的手势。 | +| TYPE_SWIPE_UP_THEN_LEFT |39| 表示先向上再向左的手势。| +| TYPE_SWIPE_UP_THEN_RIGHT |40| 表示先向上再向右的手势。| +| TYPE_SWIPE_UP_THEN_DOWN |41| 表示先向上再向下的手势。| +| TYPE_SWIPE_DOWN |42| 表示向下的手势。 | +| TYPE_SWIPE_DOWN_THEN_LEFT |43| 表示先向下再向左的手势。| +| TYPE_SWIPE_DOWN_THEN_RIGHT |44| 表示先向下再向右的手势。| +| TYPE_SWIPE_DOWN_THEN_UP |45| 表示先向下再向上的手势。| +| TYPE_TWO_FINGER_SINGLE_TAP |46| 表示双指单击的手势。| +| TYPE_TWO_FINGER_DOUBLE_TAP |47| 表示双指双击的手势。| +| TYPE_TWO_FINGER_DOUBLE_TAP_AND_HOLD | 48 | 表示双指双击且长按的手势。 | +| TYPE_TWO_FINGER_TRIPLE_TAP |49| 表示双指三击的手势。| +| TYPE_TWO_FINGER_TRIPLE_TAP_AND_HOLD | 50 | 表示双指三击且长按的手势。 | +| TYPE_THREE_FINGER_SINGLE_TAP |51| 表示三指单击的手势。| +| TYPE_THREE_FINGER_DOUBLE_TAP |52| 表示三指双击的手势。| +| TYPE_THREE_FINGER_DOUBLE_TAP_AND_HOLD | 53 | 表示三指双击且长按的手势。 | +| TYPE_THREE_FINGER_TRIPLE_TAP |54| 表示三指三击的手势。| +| TYPE_THREE_FINGER_TRIPLE_TAP_AND_HOLD | 55 | 表示三指三击且长按的手势。 | +| TYPE_FOUR_FINGER_SINGLE_TAP |56| 表示四指单击的手势。| +| TYPE_FOUR_FINGER_DOUBLE_TAP |57| 表示四指双击的手势。| +| TYPE_FOUR_FINGER_DOUBLE_TAP_AND_HOLD | 58 | 表示四指双击且长按的手势。 | +| TYPE_FOUR_FINGER_TRIPLE_TAP |59| 表示四指三击的手势。| +| TYPE_FOUR_FINGER_TRIPLE_TAP_AND_HOLD | 60 | 表示四指三击且长按的手势。 | +| TYPE_THREE_FINGER_SWIPE_UP |61| 表示三指向上滑动的手势。| +| TYPE_THREE_FINGER_SWIPE_DOWN |62| 表示三指向下滑动的手势。| +| TYPE_THREE_FINGER_SWIPE_LEFT |63| 表示三指向左滑动的手势。| +| TYPE_THREE_FINGER_SWIPE_RIGHT |64| 表示三指向右滑动的手势。| +| TYPE_FOUR_FINGER_SWIPE_UP |65| 表示四指向上滑动的手势。| +| TYPE_FOUR_FINGER_SWIPE_DOWN |66| 表示四指向下滑动的手势。| +| TYPE_FOUR_FINGER_SWIPE_LEFT |67| 表示四指向左滑动的手势。| +| TYPE_FOUR_FINGER_SWIPE_RIGHT |68| 表示四指向右滑动的手势。| + +## AccessibilityAction + +无障碍节点元素可执行的操作,无障碍节点元素是指,UI界面上可执行无障碍操作的一些组件,例如:按钮、文本输入框等组件。 + +**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core + +| 名称 | 值 | 说明 | +| -------------------------- | ---- | ------------------------ | +| ACCESSIBILITY_FOCUS | 0 | 表示获得无障碍焦点。 | +| CLEAR_ACCESSIBILLITY_FOCUS | 1 | 表示清除无障碍焦点。 | +| FOCUS | 2 | 表示组件获得焦点。 | +| CLEAR_FOCUS | 3 | 表示清除组件焦点。 | +| CLICK | 4 | 表示点击组件。 | +| LONG_CLICK | 5 | 表示长按点击组件。 | +| CUT | 6 | 表示剪切组件内容。 | +| COPY | 7 | 表示拷贝组件内容。 | +| PASTE | 8 | 表示粘贴内容到组件。 | +| SELECT | 9 | 表示选择组件。 | +| SET_TEXT | 10 | 表示设置组件的文本。 | +| SCROLL_FORWARD | 11 | 表示向前滚动组件。 | +| SCROLL_BACKWARD | 12 | 表示向后滚动组件。 | +| SET_SELECTION | 13 | 表示选定组件内文本范围。 | +| SET_CURSOR_POSITION | 14 | 表示设置组件内的光标位置。 | +| HOME | 15 | 表示组件返回首页操作。 | +| BACK | 16 | 表示执行返回操作。 | +| RECENT_TASK | 17 | 显示最近任务。 | +| NOTIFICATION_CENTER | 18 | 显示通知中心。 | +| CONTROL_CENTER | 19 | 显示控制中心。 | +| COMMON | 20 | 表示没有特定操作,用于主动聚焦、主动播报等场景。 | +| SPAN_CLICK | 21 | 对局部文本进行点击操作。 | + diff --git a/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-application-accessibilityExtensionAbility-sys.md b/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-application-accessibilityExtensionAbility-sys.md new file mode 100644 index 0000000000000000000000000000000000000000..baaddf7b7359f7f0be6a73a9b2593c9dabcbe3d1 --- /dev/null +++ b/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-application-accessibilityExtensionAbility-sys.md @@ -0,0 +1,138 @@ +# @ohos.application.AccessibilityExtensionAbility (辅助功能扩展能力)(系统接口) + +AccessibilityExtensionAbility基于ExtensionAbility框架,提供辅助功能业务的能力,能力包括成功连接无障碍服务、断开无障碍服务、处理无障碍服务事件和无障碍按键事件等。 + +> **说明:** +> +> - 本模块首批接口从API version 20开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> - 当前页面仅包含本模块的系统接口。其他公开接口参见[@ohos.application.AccessibilityExtensionAbility](js-apis-application-accessibilityExtensionAbility.md)。 + +## 导入模块 + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +``` +## AccessibilityEventInfo + +无障碍事件信息。 + +**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core + +### 属性 + +| 名称 | 类型 | 只读 | 可选 | 说明 | +| ----------------------------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- | +| eventType | [AccessibilityEventType](./js-apis-accessibility-sys.md#accessibilityeventtype) | 否 | 否 | 无障碍事件类型。 | +| target | [AccessibilityElement](js-apis-inner-application-accessibilityExtensionContext-sys.md#accessibilityelement12) | 否 | 是 | 发生事件的目标组件。 | +| timeStamp | number | 否 | 是 | 事件时间戳,单位是毫秒。默认值为0。 | +| elementId | number | 否 | 是 | 主动聚焦的组件ID。默认值为0。 | +| textAnnouncedForAccessibility | string | 否 | 是 | 主动播报的内容。 | +| extraInfo | string | 否 | 是 | 针对TextArea、TextInput、SearchField、RichEdit组件, 组件文本内容有新增或删除时,新增或删除的文本内容。 | + + +## AccessibilityExtensionAbility.onAccessibilityConnect + +onAccessibilityConnect(): void; + +用户启用AccessibilityExtensionAbility时,系统服务完成连接后,回调此接口,可以在该方法中执行初始化业务逻辑操作。该方法可以选择性重写。无障碍服务通过此回调,通知此Ability已经成功连接到无障碍服务。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; + +class MyAccessibilityExtensionAbility extends AccessibilityExtensionAbility { + onAccessibilityConnect(): void { + console.log('AxExtensionAbility onAccessibilityConnect'); + } +} +``` + +## AccessibilityExtensionAbility.onAccessibilityDisconnect + +onAccessibilityDisconnect(): void; + +用户停用AccessibilityExtensionAbility时,系统服务完成断开连接后,回调此接口,可以该方法中执行资源回收退出业务逻辑操作。该方法可以选择性重写。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; + +class MyAccessibilityExtensionAbility extends AccessibilityExtensionAbility { + onAccessibilityDisconnect(): void { + console.log('AxExtensionAbility onAccessibilityDisconnect'); + } +} +``` + +## AccessibilityExtensionAbility.onAccessibilityEvent + +onAccessibilityEvent(event: onAccessibilityEventInfo): void; + +在关注的应用及事件类型对应的事件发生时回调此接口,可以在该方法中根据事件信息进行业务逻辑处理。通常需要重写。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ---------------------------------------- | ---- | ----- | +| event | [onAccessibilityEventInfo](#accessibilityeventinfo) | 是 | 无障碍事件 | + +**示例:** + +```ts +import { AccessibilityExtensionAbility, AccessibilityEventInfo, AccessibilityEventType } from '@kit.AccessibilityKit'; + +class MyAccessibilityExtensionAbility extends AccessibilityExtensionAbility { + onAccessibilityEventInfo(event: AccessibilityEventInfo): void { + console.log('AxExtensionAbility onAccessibilityEventInfo'); + if (event.eventType === AccessibilityEventType.TYPE_CLICK) { + console.log('AxExtensionAbility onAccessibilityEventInfo: click'); + } + } +} +``` + +## AccessibilityExtensionAbility.onAccessibilityKeyEvent + +onAccessibilityKeyEvent(keyEvent: KeyEvent): boolean; + +在物理按键按下时回调该方法,在该方法中根据业务判断是否消费事件。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ---- | +| keyEvent | [KeyEvent](../apis-input-kit/js-apis-keyevent.md#keyevent) | 是 | 按键事件。 | + +**返回值:** +| 类型 | 说明 | +| ------- | ------------------------------------------------------------ | +| boolean | 返回true表示此事件被消费,不会继续传递。
返回false表示些事件未被消费,会继续传递。| + + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { KeyEvent, KeyCode } from '@kit.InputKit'; + +class MyAccessibilityExtensionAbility extends AccessibilityExtensionAbility { + onAccessibilityKeyEvent(keyEvent: KeyEvent): boolean { + console.log('AxExtensionAbility onAccessibilityKeyEvent'); + if (keyEvent.key.code === KeyCode.KEYCODE_VOLUME_UP) { + console.log('AxExtensionAbility onAccessibilityKeyEvent: intercept 16'); + return true; + } + return false; + } +} +``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-inner-application-accessibilityExtensionContext-sys.md b/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-inner-application-accessibilityExtensionContext-sys.md index e6aa6eacbb4465ca2e034217ca1250985862fa2f..98e7e231933ba6b069e0673493720fe2b1300c1d 100644 --- a/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-inner-application-accessibilityExtensionContext-sys.md +++ b/zh-cn/application-dev/reference/apis-accessibility-kit/js-apis-inner-application-accessibilityExtensionContext-sys.md @@ -23,6 +23,568 @@ class EntryAbility extends AccessibilityExtensionAbility { } ``` +## Parameter20 + +无障碍节点元素执行特定操作时,为操作提供具体设置的参数值。 +详见[无障碍节点元素可执行的操作](./js-apis-accessibility-sys.md#accessibilityaction) + +**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core + +| 名称 | 类型 | 只读 |可选| 说明 | +| ------------------- | ------ | ---- | ----|--------------------------------- | +| setText | string | 否 |是 |SET_TEXT操作对应的文本内容 | +| selectTextBegin | string | 否 | 是|SET_SELECTION操作的起始坐标。例:‘2’ | +| selectTextEnd | string | 否 | 是|SET_SELECTION操作的结束坐标。例:‘8’ | +| selectTextInForWard | bool | 否 | 是|SET_SELECTION操作是否向前选择,例:true | +| offset | string | 否 | 是|SET_CURSOR_POSITION操作的位移。例:'1' | +| spanId | string | 否 |是 |SPAN文本进行点击操作时文本id | +| scrollType | string | 否 | 是|组件滚动类型,包括SCROLL_FORWARD(向前滚动)和SCROLL_BACKWARD(向后滚动) | + +例如:针对action: AccessibilityAction.SET_SELECTION, executeAction方法的第二个参数如下: +```ts +let p : Parameter = { selectTextBegin: '0', selectTextEnd: '8', selectTextInForWard: true } +``` +可以选中文本输入框中index从0到7的字符 + +## startAbility12+ + +startAbility(want: Want): Promise\; + +提供拉起前台页面的能力。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| want | [Want](../../reference/apis-ability-kit/js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ---------------- | +| Promise<void> | 无返回结果的Promise对象。 | + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码ID | 错误信息 | +| ------- | ---------------------------------------- | +| 201 | Permission denied. Interface caller does not have permission. | +| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | + +**示例:** + +```ts +import { BusinessError } from '@kit.BasicServicesKit'; + +let want: Want = { + bundleName: 'com.huawei.hmos.photos' + abilityName: 'com.huawei.hmos.photos.MainAbility' +} + +axContext.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; + +提供批量查询节点的能力。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| windowId | number | 是 | 表示查询的窗口id。 | +| elementId | number | 否 | 表示查询的节点id。传入此参数表示查询当前节点下的所有子节点列表,不传则查询窗口下所有节点。默认值为-1。 | + +**返回值:** +| 类型 | 说明 | +| ----------------------------------- | ---------------------- | +| Promise | Promise对象,返回当前窗口或者当前节点下的所有子节点列表。 | + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityElement } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let windowId: number = 10; +let elementId: number = 10; + +axContext.getElements(windowId, elementId).then((data:AccessibilityElement[]) => { + console.log(`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; + +提供查询应用自定义默认焦点的能力。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| windowId | number | 是 | 表示查询的窗口id。 | + +**返回值:** +| 类型 | 说明 | +| ----------------------------------- | ---------------------- | +| Promise | Promise对象,返回当前窗口下的自定义默认焦点列表。 | + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityElement } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let windowId: number = 10; + +axContext.getDefaultFocusedElementIds(windowId).then((data: number[]) => { + console.log(`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 + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +try { + axContext.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 + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +try { + axContext.unholdRunningLockSync(); +} catch (err) { + console.error(`Failed to unhold RunningLock, code is ${err.code}, message is ${err.message}`); +} +``` + +## AccessibilityExtensionContext.on('preDisconnect')20+ + +on(type: 'preDisconnect', callback: Callback<void>): void + +向无障碍服务注册回调函数,在无障碍服务关闭该无障碍扩展服务前会执行该回调函数。 + +此注册函数需要与[notifyDisconnect](#accessibilityextensioncontextnotifydisconnect20)配合使用,如果不调用[notifyDisconnect](#accessibilityextensioncontextnotifydisconnect20),则默认等待30秒后,无障碍扩展服务会自动关闭。 + +**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。 | +| callback | Callback<void> | 是 |回调函数,在无障碍扩展服务即将关闭时回调。| + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +try { + axContext.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 + +取消已经向无障碍服务注册的预关闭回调函数,无障碍服务关闭该扩展服务前不再执行该回调。 + +**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。 | +| callback | Callback<void> | 否 |回调函数,取消指定无障碍扩展服务即将关闭时的回调。需与[on('preDisconnect')](#accessibilityextensioncontextonpredisconnect20)的callback一致。缺省时,表示注销所有已注册事件。| + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +try { + axContext.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')](#accessibilityextensioncontextonpredisconnect20)配合使用,如果没有调用过注册预关闭函数,直接调用此函数不生效。 + +**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**错误码:** + +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +try { + axContext.notifyDisconnect(); +} catch (err) { + console.error(`Failed to notify accessibility, code is ${err.code}, message is ${err.message}`); +} +``` + +## getAccessibilityFocusedElement20+ + +getAccessibilityFocusedElement(): Promise\; + +获取当前获得焦点的元素。 + +**权限:** ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**返回值:** +| 类型 | 描述 | +| ----------------------------------- | ---------------------- | +| Promise\<[AccessibilityElement](#accessibilityelement12)>| 异步返回函数结果.| + +**错误码:** +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 + +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityElement } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +axContext.getAccessibilityFocusedElement().then((element: AccessibilityElement) => { + console.log(`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](#accessibilityelement12)>; + +获取活动窗口根元素。 + +**权限:** ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| windowId | number | No | Window ID to be obtained.| + +**返回值:** +| 类型 | 描述 | +| ----------------------------------- | ---------------------- | +| Promise\<[AccessibilityElement](#accessibilityelement12)>| Promise used to return the result.| + +**错误码:** +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityElement } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let windowId: number = 0; + +axContext.getRootInActiveWindow(windowId).then((element: AccessibilityElement) => { + console.log(`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](#accessibilityelement12)> + +获取窗口列表。 + +**权限:** ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| displayId | number | No | 显示ID。如果未提供此参数,则表示默认displayId。 | + +**返回值:** + +| 类型 | 描述 | +| ----------------------------------- | ---------------------- | +| Array\<[AccessibilityElement](#accessibilityelement12)> | 窗口列表。| + +**错误码:** +以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +| 错误码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. | + +**示例:** + +```ts +import { AccessibilityElement } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let displayId: number = 0; + +let windowList: AccessibilityElement[] = axContext.getAccessibilityWindowsSync(displayId); + +for (let window of windowList) { + console.log(`window id: ${window.windowId}`); +} +``` + +## AccessibilityElement12+ + +无障碍节点元素。在调用 **AccessibilityElement** 的 API 之前,应该调用 [AccessibilityExtensionContext.getAccessibilityFocusedElement()](#getaccessibilityfocusedelement20) 或 [AccessibilityExtensionContext.getRootInActiveWindow()](#getrootinactivewindow20) 来获取一个 **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](js-apis-inner-application-accessibilityExtensionContext.md#Rect) | 是 | 否 | 元素的区域。| +| resourceName20+ | string | 是 | 否 | 元素的资源名称。| +| screenRect20+ | [Rect](js-apis-inner-application-accessibilityExtensionContext.md#Rect) | 是 | 否 | 元素的显示区域。| +| scrollable20+ | boolean | 是 | 否 | 元素是否可滚动。值为 **true** 表示元素可滚动,**false** 表示相反情况。
默认值:**false**。| +| selected20+ | boolean | 是 | 否 | 元素是否已选中。值为 **true** 表示元素已选中,**false** 表示相反情况。
默认值:**false**。| +| startIndex20+ | number | 是 | 否 | 屏幕上第一个列表项的索引。
默认值:**0**。| +| text20+ | string | 是 | 否 | 元素的文本内容。| +| textLengthLimit20+ | number | 是 | 否 | 元素的最大文本长度。| +| textMoveUnit20+ | [accessibility.TextMoveUnit](js-apis-accessibility.md#textmoveunit)| 是 | 否 | 文本朗读时的移动单位。
默认值:**0**。| +| triggerAction20+ | [accessibility.Action](js-apis-accessibility.md#action) | 是 | 否 | 触发元素事件的操作。| +| type20+ | [WindowType](js-apis-inner-application-accessibilityExtensionContext.md#windowtype) | 是 | 否 | 元素的窗口类型。| +| valueMax20+ | number | 是 | 否 | 最大值。
默认值:**0**。| +| valueMin20+ | number | 是 | 否 | 最小值。
默认值:**0**。| +| valueNow20+ | number | 是 | 否 | 当前值。
默认值:**0**。| +| windowId20+ | number | 是 | 否 | 窗口 ID。
默认值:**-1**。| +| offset20+ | number | 是 | 否 | 内容区域相对于可滚动组件(如 **List** 和 **Grid**)顶部坐标的像素偏移量。
默认值:**0**。| +| textType20+ | string | 是 | 否 | 元素的无障碍文本类型,由组件的 **accessibilityTextHint** 属性配置。| +| accessibilityText20+ | string | 是 | 否 | 元素的无障碍文本信息。| +| hotArea20+ | [Rect](js-apis-inner-application-accessibilityExtensionContext.md#Rect) | 是 | 否 | 元素的可触摸区域。| +| customComponentType20+ | string | 是 | 否 | 自定义组件类型。| +| accessibilityNextFocusId20+ | number | 是 | 否 | 下一个要获得焦点的组件的 ID。
默认值:**-1**。| +| accessibilityPreviousFocusId20+ | number | 是 | 否 | 上一个要获得焦点的组件的 ID。
默认值:**-1**。| +| extraInfo20+ | string | 是 | 否 | 元素的额外信息。值为 JSON 字符串。| +| accessibilityScrollable20+ | boolean | 是 | 否 | 元素是否因无障碍目的而可滚动。此属性优先级高于 **scrollable**。
- **true**(默认值):元素可滚动。
- **false**:元素不可滚动。| +| supportedActionNames20+ | Array<string> | 是 | 否 | 支持的操作名称。| +| accessibilityGroup20+ | boolean | 是 | 否 | 元素是否为无障碍组。值为 **true** 表示元素是无障碍组,**false** 表示相反情况。
默认值:**false**。| +| accessibilityLevel20+ | string | 是 | 否 | 组件的无障碍级别。| +| navDestinationId20+ | number | 是 | 否 | 组件的导航目标 ID。| +| currentItem20+ | AccessibilityGrid | 是 | 否 | 组件网格中的当前项。| +| spans20+ | AccessibilitySpan[] | 是 | 否 | 组件的跨度数组。| +| accessibilityVisible20+ | boolean | 是 | 否 | 组件是否无障碍可见。| +| mainWindowId20+ | number | 是 | 否 | 组件的主窗口 ID。| +| clip20+ | boolean | 是 | 否 | 组件是否需要裁剪。| +| parentId20+ | number | 是 | 否 | 组件的父元素 ID。| +| childrenIds20+ | Array\ | 是 | 否 | 组件的子元素 ID 列表。| + +**示例:** +```ts +import { AccessibilityElement } from '@kit.AccessibilityKit'; +import { BusinessError } from '@kit.BasicServicesKit'; + +let windowId: number = 10; + +axContext.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) => { + console.log(`getRootInActiveWindow failed, code: ${err.code}, message: ${err.message}`); +}) +``` + ### enableScreenCurtain12+ enableScreenCurtain(isEnable: boolean): void; @@ -211,19 +773,23 @@ rootElement.getCursorPosition((err: BusinessError, data: number) => { }); ``` -### startAbility12+ -startAbility(want: Want): Promise\; +### executeAction20+ -提供拉起前台页面的能力。 +executeAction(action: AccessibilityAction, parameters?: Parameter): Promise\; + +根据action指定的操作类型和parameters传入的参数,执行特定操作。使用Promise异步回调。 + +**权限**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY **系统能力**:SystemCapability.BarrierFree.Accessibility.Core **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------- | -------- | -------- | -| want | [Want](../../reference/apis-ability-kit/js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- |----------------------------------------------------------| +| action | [AccessibilityAction](./js-apis-accessibility-sys.md#accessibilityaction)| 是 | 无障碍节点可执行的操作。。 +| parameters | [Parameter](#parameter20) | 否 | 执行操作时设置的参数值,默认为空。 | **返回值:** @@ -237,55 +803,98 @@ startAbility(want: Want): Promise\; | 错误码ID | 错误信息 | | ------- | ---------------------------------------- | -| 201 | Permission denied. Interface caller does not have permission. | -| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | +| 401 | Input parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | +| 9300005 | This action is not supported. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; +import { AccessibilityAction, Parameter } from '@kit.AccessibilityKit'; -let want: Want = { - bundleName: 'com.huawei.hmos.photos' - abilityName: 'com.huawei.hmos.photos.MainAbility' -} +// rootElement是AccessibilityElement的实例 +rootElement.executeAction(action).then(() => { + console.info(`Succeeded in perform action,actionName is ${actionName}`); +}).catch((err: BusinessError) => { + console.error(`failed to perform action, Code is ${err.code}, message is ${err.message}`); +}); +``` -axContext.startAbility(want).then(() => { - console.info(`startAbility Succeeded enable ability`); + +```ts +//无参数Action示例: +import { BusinessError } from '@kit.BasicServicesKit'; +import { AccessibilityAction, Parameter } from '@kit.AccessibilityKit'; + +// rootElement是AccessibilityElement的实例 +// Action描述中无明确要求的,均为无参数Action +rootElement.executeAction(AccessibilityAction.CLICK).then(() => { + console.info(`Succeeded in perform action.`); }).catch((err: BusinessError) => { - console.error(`startAbility failed to enable ability, Code is ${err.code}, message is ${err.message}`); + console.error(`failed to perform action, Code is ${err.code}, message is ${err.message}`); }); ``` -### AccessibilityExtensionContext.getElements18+ -getElements(windowId: number, elementId?: number): Promise; -提供批量查询节点的能力。 +```ts +//有参数Action示例: +import { BusinessError } from '@kit.BasicServicesKit'; +import { AccessibilityAction, Parameter } from '@kit.AccessibilityKit'; + +// selectTextBegin: 表示选择起始位置 +// selectTextEnd: 表示选择结束位置 +// selectTextInForWard: true表示为前光标,false表示为后光标 +let p : Parameter = { selectTextBegin: '0', selectTextEnd: '8', selectTextInForWard: true } +// rootElement是AccessibilityElement的实例 +// setSelection示例代码 +rootElement.executeAction(AccessibilityAction.SET_SELECTION, p).then(() => { + console.info(`Succeeded in perform action`); +}).catch((err: BusinessError) => { + console.error(`failed to perform action, Code is ${err.code}, message is ${err.message}`); +}); +``` -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +```ts +//有参数Action示例: +import { BusinessError } from '@kit.BasicServicesKit'; +import { AccessibilityAction, Parameter } from '@kit.AccessibilityKit'; -**参数:** +// offset: 表示光标的设置位置 +let p : Parameter = { offset: '1' } +// rootElement是AccessibilityElement的实例 +// setCursorPosition示例代码 +rootElement.executeAction(AccessibilityAction.SET_CURSOR_POSITION, p).then(() => { + console.info(`Succeeded in perform action`); +}).catch((err: BusinessError) => { + console.error(`failed to perform action, Code is ${err.code}, message is ${err.message}`); +}); +``` -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------- | -------- | -------- | -| windowId | number | 是 | 表示查询的窗口id。 | -| elementId | number | 否 | 表示查询的节点id。传入此参数表示查询当前节点下的所有子节点列表,不传则查询窗口下所有节点。默认值为-1。 | +### getParent20+ + +getParent(): Promise\; + +获取元素的父元素。 + +**权限**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY + +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core **返回值:** -| 类型 | 说明 | -| ----------------------------------- | ---------------------- | -| Promise | Promise对象,返回当前窗口或者当前节点下的所有子节点列表。 | + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\<[AccessibilityElement](#accessibilityelement12)> | 父元素。| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码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. | -| 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. | **示例:** @@ -293,44 +902,42 @@ getElements(windowId: number, elementId?: number): Promise { - console.log(`Succeeded in find element, ${JSON.stringify(data)}`); -}).catch((err: BusinessError) => { - console.error(`failed to find element, Code is ${err.code}, message is ${err.message}`); -}); +axContext.getAccessibilityFocusedElement().then((element: AccessibilityElement) => { + console.log(`element parent id: ${element.parentId}`); + element.getParent().then((parent: AccessibilityElement) => { + console.log(`parent element's parent id: ${parent.parentId}`); + }).catch((err) => { + console.log(`getParent failed, code: ${err.code}, message: ${err.message}`); + }) +}).catch((err) => { + console.log(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`); +}) ``` -### AccessibilityExtensionContext.getDefaultFocusedElementIds18+ +### getChildren20+ -getDefaultFocusedElementIds(windowId: number): Promise; - -提供查询应用自定义默认焦点的能力。 +getChildren(): Promise\>; -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +获取元素的子元素列表。 -**参数:** +**权限:**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------- | -------- | -------- | -| windowId | number | 是 | 表示查询的窗口id。 | +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core **返回值:** -| 类型 | 说明 | -| ----------------------------------- | ---------------------- | -| Promise | Promise对象,返回当前窗口下的自定义默认焦点列表。 | + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\> | 子元素数组。| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码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. | -| 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. | **示例:** @@ -338,193 +945,303 @@ getDefaultFocusedElementIds(windowId: number): Promise; import { AccessibilityElement } from '@kit.AccessibilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; -let windowId: number = 10; - -axContext.getDefaultFocusedElementIds(windowId).then((data: number[]) => { - console.log(`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}`); -}); +axContext.getAccessibilityFocusedElement().then((element: AccessibilityElement) => { + console.log(`element childrenIds: ${element.childrenIds}`); + element.getChildren().then((children: AccessibilityElement[]) => { + console.log(`children element's size: ${children.length}`); + }).catch((err) => { + console.log(`getChildren failed, code: ${err.code}, message: ${err.message}`); + }) +}).catch((err) => { + console.log(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`); +}) ``` -### AccessibilityExtensionContext.holdRunningLockSync20+ +### getRoot20+ -holdRunningLockSync(): void +getRoot(): Promise\; -持有RunningLock锁,持锁后,屏幕不会自动灭屏。 +获取活动窗口中的根元素。 -**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY +**权限:**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core + +**返回值:** + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\<[AccessibilityElement](#accessibilityelement12)> | 根元素。| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码ID | 错误信息 | +| 错误码ID | 错误信息 | | ------- | ---------------------------------------- | -| 201 | Permission verification failed. The application does not have the permission required to call the API. | +| 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. | **示例:** ```ts -import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +import { AccessibilityElement } from '@kit.AccessibilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; -try { - axContext.holdRunningLockSync(); -} catch (err) { - console.error(`Failed to hold RunningLock, Code is ${err.code}, message is ${err.message}`); +let windows: AccessibilityWindow[] = axContext.getAccessibilityWindowsSync() +for (let window of windows) { + console.log(`window id: ${window.windowId}`); + window.getRoot().then((root: AccessibilityElement) => { + console.log(`root element's componentId: ${root.componentId}`); + }).catch((err) => { + console.log(`getRoot failed, code: ${err.code}, message: ${err.message}`); + }) } ``` -### AccessibilityExtensionContext.unholdRunningLockSync20+ +### findElementByContent -unholdRunningLockSync(): void +findElementByContent(content: string): Promise\>; -释放RunningLock锁,恢复自动灭屏。 +根据内容查找元素。 -**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY +**权限:**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 名称 | 类型 | 必填 | 描述 | +| -------- | ---- | -------- | ------------------------------------------------------------ | +| content | string | 是 | 内容。 | + +**返回值:** + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\> | 元素数组。| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码ID | 错误信息 | +| 错误码ID | 错误信息 | | ------- | ---------------------------------------- | -| 201 | Permission verification failed. The application does not have the permission required to call the API. | +| 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. | **示例:** ```ts -import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +// 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'; import { BusinessError } from '@kit.BasicServicesKit'; -try { - axContext.unholdRunningLockSync(); -} catch (err) { - console.error(`Failed to unhold RunningLock, code is ${err.code}, message is ${err.message}`); -} -``` +let windowId: number = 10; -### AccessibilityExtensionContext.on('preDisconnect')20+ +axContext.getRootInActiveWindow(windowId)..then((root: AccessibilityElement) => { + root.findElementByContent('connect').then((elements: AccessibilityElement[]) => { + console.log("findElementByContent size=" + elements.length) + }).catch((err) => { + console.log(`findElementByContent failed, code: ${err.code}, message: ${err.message}`); + }) +}).catch((err) => { + console.log(`getRootInActiveWindow failed, code: ${err.code}, message: ${err.message}`); +}) +``` -on(type: 'preDisconnect', callback: Callback<void>): void +### findElementByFocusDirection -向无障碍服务注册回调函数,在无障碍服务关闭该无障碍扩展服务前会执行该回调函数。 +findElementByFocusDirection(direction: FocusDirection): Promise\; -此注册函数需要与[notifyDisconnect](#accessibilityextensioncontextnotifydisconnect20)配合使用,如果不调用[notifyDisconnect](#accessibilityextensioncontextnotifydisconnect20),则默认等待30秒后,无障碍扩展服务会自动关闭。 +根据焦点方向查找元素。 -**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY +**权限:**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------- | -------- | -------- | -| type | string | 是 | 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。 | -| callback | Callback<void> | 是 |回调函数,在无障碍扩展服务即将关闭时回调。| +| 名称 | 类型 | 必填 | 描述 | +| -------- | ---- | -------- | ------------------------------------------------------------ | +| direction | FocusDirection | 是 | 焦点方向。 | + +**返回值:** + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\<[AccessibilityElement](#accessibilityelement12)> | AccessibilityElement.| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码ID | 错误信息 | +| 错误码ID | 错误信息 | | ------- | ---------------------------------------- | -| 201 | Permission verification failed. The application does not have the permission required to call the API. | +| 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. | **示例:** ```ts -import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +// 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'; import { BusinessError } from '@kit.BasicServicesKit'; -try { - axContext.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}`); -} +axContext.getAccessibilityFocusedElement().then((focus: AccessibilityElement) => { + focus.findElementByFocusDirection('up').then((element: AccessibilityElement) => { + console.log("findElementByFocusDirection UP componentId: " + element.componentId); + }).catch((err) => { + console.log(`findElementByFocusDirection UP failed, code: ${err.code}, message: ${err.message}`); + }) +}).catch((err) => { + console.log(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`); +}) ``` -### AccessibilityExtensionContext.off('preDisconnect')20+ +### findElementByAccessibilityHintText -off(type: 'preDisconnect', callback?: Callback<void>): void +findElementsByAccessibilityHintText(hintText: string): Promise\>; -取消已经向无障碍服务注册的预关闭回调函数,无障碍服务关闭该扩展服务前不再执行该回调。 +根据性提示文本查找元素。 -**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY +**权限:**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------- | -------- | -------- | -| type | string | 是 | 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。 | -| callback | Callback<void> | 否 |回调函数,取消指定无障碍扩展服务即将关闭时的回调。需与[on('preDisconnect')](#accessibilityextensioncontextonpredisconnect20)的callback一致。缺省时,表示注销所有已注册事件。| +| 名称 | 类型 | 必填 | 描述 | +| -------- | ---- | -------- | ------------------------------------------------------------ | +| hintText | string | 是 | 提示文本。 | + +**返回值:** + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\> | 元素数组。| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码ID | 错误信息 | +| 错误码ID | 错误信息 | | ------- | ---------------------------------------- | -| 201 | Permission verification failed. The application does not have the permission required to call the API. | +| 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. | **示例:** ```ts -import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +// 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'; import { BusinessError } from '@kit.BasicServicesKit'; -try { - axContext.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}`); -} +let windowId: number = 10; + +axContext.getRootInActiveWindow(windowId).then((root: AccessibilityElement) => { + root.findElementByAccessibilityHintText('location').then((elements: AccessibilityElement[]) => { + console.log("findElementByAccessibilityHintText size=" + elements.length) + }).catch((err) => { + console.log(`findElementByAccessibilityHintText failed, code: ${err.code}, message: ${err.message}`); + }) +}).catch((err) => { + console.log(`getRootInActiveWindow failed, code: ${err.code}, message: ${err.message}`); +}) ``` -### AccessibilityExtensionContext.notifyDisconnect20+ +### findElementById -notifyDisconnect(): void +findElementById(elementId: number): Promise\; -通知无障碍服务可以关闭该无障碍扩展服务。 +根据元素 ID 查找元素。 -此函数需要与注册预关闭接口[on('preDisconnect')](#accessibilityextensioncontextonpredisconnect20)配合使用,如果没有调用过注册预关闭函数,直接调用此函数不生效。 +**权限:**: ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY -**需要权限**:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY +**系统能力**: SystemCapability.BarrierFree.Accessibility.Core -**系统能力**:SystemCapability.BarrierFree.Accessibility.Core +**参数:** + +| 名称 | 类型 | 必填 | 描述 | +| -------- | ---- | -------- | ------------------------------------------------------------ | +| id | number | 是 | 元素 ID。 | + +**返回值:** + +| 类型 | 描述 | +| ---------------------------------------- | --------------------- | +| Promise\<[AccessibilityElement](#accessibilityelement12)> | AccessibilityElement.| **错误码:** -以下错误码的详细介绍请参见[无障碍子系统错误码](errorcode-accessibility.md)。 +有关错误码的详细信息,请参阅[无障碍子系统错误码](errorcode-accessibility.md)。 -| 错误码ID | 错误信息 | +| 错误码ID | 错误信息 | | ------- | ---------------------------------------- | -| 201 | Permission verification failed. The application does not have the permission required to call the API. | +| 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. | **示例:** ```ts -import { AccessibilityExtensionAbility } from '@kit.AccessibilityKit'; +// 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'; import { BusinessError } from '@kit.BasicServicesKit'; -try { - axContext.notifyDisconnect(); -} catch (err) { - console.error(`Failed to notify accessibility, code is ${err.code}, message is ${err.message}`); -} -``` \ No newline at end of file +axContext.getAccessibilityFocusedElement().then((focus: AccessibilityElement) => { + focus.findElementById(0).then((element: AccessibilityElement) => { + console.log("findElementById componentId: " + element.componentId); + }).catch((err) => { + console.log(`findElementById failed, code: ${err.code}, message: ${err.message}`); + }) +}).catch((err) => { + console.log(`getAccessibilityFocusedElement failed, code: ${err.code}, message: ${err.message}`); +}) +```