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

  • 2025-06-12
  • 浏览 (3)

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

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

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

说明:

使用说明

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

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

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

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 } from '@kit.AccessibilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

let rootElement: AccessibilityElement;

axContext.getWindowRootElement().then((data: AccessibilityElement) => {
  rootElement = data;
  console.log(`Succeeded in get root element of the window, ${JSON.stringify(data)}`);
  await rootElement.enableScreenCurtain(true);
  console.log(`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&lt;AccessibilityElement&gt; Promise对象,返回满足指定查询条件的节点元素。

错误码:

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

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

示例:

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

//elementId为10
let condition = 10;

// rootElement是AccessibilityElement的实例
rootElement.findElement('elementId', condition).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}`);
});

findElement(‘textType’)12+

findElement(type: ‘textType’, condition: string): Promise<Array<AccessibilityElement>>;

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

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

参数:

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

返回值:

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

错误码:

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

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

示例:

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

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

// rootElement是AccessibilityElement的实例
rootElement.findElement('textType', condition).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}`);
});

getCursorPosition12+

getCursorPosition(): Promise<number>;

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

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

返回值:

类型 说明
Promise&lt;number&gt; 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&lt;number&gt; 回调函数,表示文本组件中光标位置。

示例:

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}`);
});

startAbility12+

startAbility(want: Want): Promise<void>;

提供拉起前台页面的能力。

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

参数:

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

返回值:

类型 说明
Promise&lt;void&gt; 无返回结果的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.

示例:

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对象,返回当前窗口或者当前节点下的所有子节点列表。|

错误码:

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

错误码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 } 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对象,返回当前窗口下的自定义默认焦点列表。|

错误码:

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

错误码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 } 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

错误码:

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

错误码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 { 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

错误码:

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

错误码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 { 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&lt;void&gt;): void

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

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

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

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

参数:

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

错误码:

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

错误码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 { 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&lt;void&gt;): void

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

需要权限:ohos.permission.ACCESSIBILITY_EXTENSION_ABILITY

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

参数:

参数名 类型 必填 说明
type string 监听事件名,固定为‘preDisconnect’,即无障碍扩展服务即将关闭事件。
callback Callback&lt;void&gt; 回调函数,取消指定无障碍扩展服务即将关闭时的回调。需与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 { 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’)配合使用,如果没有调用过注册预关闭函数,直接调用此函数不生效。

需要权限: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 { 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}`);
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Accessibility Kit(无障碍开发服务)

harmony 鸿蒙无障碍子系统错误码

harmony 鸿蒙@ohos.accessibility.GesturePath (手势路径)

harmony 鸿蒙@ohos.accessibility.GesturePoint (手势触摸点)

harmony 鸿蒙@ohos.accessibility.config (系统辅助功能配置)(系统接口)

harmony 鸿蒙@ohos.accessibility (辅助功能)

harmony 鸿蒙@ohos.application.AccessibilityExtensionAbility (辅助功能扩展能力)

harmony 鸿蒙AccessibilityExtensionContext (辅助功能扩展上下文)

0  赞