目录

@ohos.InputMethodExtensionAbility (InputMethodExtensionAbility)

@ohos.InputMethodExtensionAbility模块提供输入法ExtensionAbility(扩展能力基类)的基础类定义,是开发输入法应用的入口和生命周期管理框架。

本模块是输入法ExtensionAbility的核心类模块,定义了InputMethodExtensionAbility类,作为输入法应用的Extension基类。开发者需继承该类并实现onCreate和onDestroy生命周期回调,系统在拉起和销毁输入法Extension时自动调用这些回调。

本模块提供两大核心能力:1)通过onCreate(want)回调实现输入法应用的初始化——系统拉起输入法Extension时调用,开发者在此完成资源加载、面板创建等初始化工作;2)通过onDestroy()回调实现输入法应用的资源清理——系统销毁输入法Extension时调用,开发者在此释放资源。此外,通过context属性提供InputMethodExtensionContext上下文对象,供开发者在生命周期内执行销毁自身、拉起其他应用等上下文级操作。

当开发输入法应用时必须使用本模块。开发者通过继承InputMethodExtensionAbility → 在module.json5中配置ExtensionAbility信息 → 系统拉起时触发onCreate(初始化) → 系统销毁或开发者主动调用context.destroy()时触发onDestroy(清理)。

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

InputMethodExtensionAbility仅定义了基础的onCreate和onDestroy两个生命周期回调。输入法的核心交互能力(如面板创建/销毁、键盘事件监听、客户端绑定等)需在onCreate回调中通过@ohos.inputMethodEngine模块获取InputMethodAbility对象来实现。onCreate是所有关键对象获取和面板创建的唯一入口,必须在该回调中完成初始化。

InputMethodExtensionAbility的context属性类型为InputMethodExtensionContext(来自@ohos.InputMethodExtensionContext模块),属于关联关系——InputMethodExtensionAbility拥有InputMethodExtensionContext的上下文能力。

Class 说明
InputMethodExtensionAbility 输入法ExtensionAbility基类,提供输入法应用的生命周期管理框架。关键成员包括:context属性(InputMethodExtensionContext上下文对象)、onCreate(want)方法(初始化回调)、onDestroy()方法(销毁回调)。开发者需继承此类并重写生命周期方法。

约束限制

为保障系统安全性和稳定性,防止InputMethodExtensionAbility滥用系统资源,系统对其能力进行管控,不支持部分模块的引用,详情请参考附录。

另外输入法应用区分基础模式和完整体验模式,关于基础模式和完整体验模式说明如下:

基础模式介绍:

基础模式下,输入法扩展(InputMethodExtensionAbility)进程无法拉起其他UIAbility或ExtensionAbility。

基础模式下,输入法扩展会受到系统管控,不能使用涉及访问或泄露用户个人数据的各种接口,同时无法将数据传递出进程。管控功能包括但不限于:网络、短信、电话、麦克风、定位、相机、蓝牙、壁纸、支付、日历、游戏、扬声器、Wi-Fi、剪贴板、多媒体、联系人、公共事件、系统账号、健康数据、地图服务、推送服务、融合搜索、共享内存、分布式特性、广告设备标识、振动等。

基础模式下,输入法扩展可以使用基础输入功能必要的系统能力,例如,IME Kit、ArkUI、窗口、图形、屏幕管理等。

基础模式下,输入法扩展对共享沙箱只读,对输入法扩展独立沙箱可读写;应用主入口可以对共享沙箱及其独立沙箱读写。

完整体验模式介绍:

完整体验模式下,输入法扩展不受基础模式相关限制,例如可以拉起其他UIAbility或ExtensionAbility、可以调用访问用户数据的接口等。

完整体验模式下,输入法扩展可以对共享沙箱读写。

导入模块

import { InputMethodExtensionAbility } from '@kit.IMEKit';

InputMethodExtensionAbility

输入法ExtensionAbility类,提供了输入法应用的核心能力,支持开发者创建输入法应用。

下列API均需通过继承InputMethodExtensionAbility创建子类后,在子类中重写或使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.MiscServices.InputMethodFramework

名称 类型 只读 可选 说明
context InputMethodExtensionContext 否 否 InputMethodExtensionAbility的上下文环境,继承于ExtensionContext。

context参数使用建议:

[h2]onCreate

onCreate(want: Want): void

生命周期回调,在拉起输入法Extension时调用,用于初始化输入法应用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.MiscServices.InputMethodFramework

参数:

参数名 类型 必填 说明
want Want 是 当前Extension相关的Want类型信息,包括Ability名称、bundle名称等。

want参数使用建议:

注意事项:

相关接口间的配合/制约关系:onCreate需配合以下接口使用:

示例:

import { InputMethodExtensionAbility, inputMethodEngine } from '@kit.IMEKit';
import { Want } from '@kit.AbilityKit';

class InputMethodExt extends InputMethodExtensionAbility {
  onCreate(want: Want): void {
    console.info(`onCreate, want: ${want.abilityName}`);

    // 获取输入法能力对象
    let ability: inputMethodEngine.InputMethodAbility = inputMethodEngine.getInputMethodAbility();

    // 获取键盘代理对象
    let keyboardDelegate: inputMethodEngine.KeyboardDelegate = inputMethodEngine.getKeyboardDelegate();

    // 创建面板
    let panelInfo: inputMethodEngine.PanelInfo = {
      type: inputMethodEngine.PanelType.SOFT_KEYBOARD,
      flag: inputMethodEngine.PanelFlag.FLG_FIXED
    };
    ability.createPanel(this.context, panelInfo, (err, panel) => {
      if (err) {
        console.error(`Failed to create panel: ${err.code}`);
        return;
      }
      console.info('Succeeded in creating panel.');
    });

    // 订阅输入法绑定事件
    ability.on('inputStart', (kbController, inputClient) => {
      console.info('Input method bound to client.');
    });
  }
}

[h2]onDestroy

onDestroy(): void

生命周期回调,在销毁输入法应用时调用,用于资源清理。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.MiscServices.InputMethodFramework

注意事项:

相关接口间的配合/制约关系:onDestroy需配合以下接口使用:

示例:

import { InputMethodExtensionAbility } from '@kit.IMEKit';

class InputMethodExt extends InputMethodExtensionAbility {
  onDestroy(): void {
    // 销毁面板、取消事件订阅等清理工作
    console.info('onDestroy');
  }
}

附录

InputMethodExtensionAbility不支持以下模块的引用。