智能客服
你问我答,随时在线为你解决问题
@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'; 输入法ExtensionAbility类,提供了输入法应用的核心能力,支持开发者创建输入法应用。
下列API均需通过继承InputMethodExtensionAbility创建子类后,在子类中重写或使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.MiscServices.InputMethodFramework
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| context | InputMethodExtensionContext | 否 | 否 | InputMethodExtensionAbility的上下文环境,继承于ExtensionContext。 |
context参数使用建议:
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.');
});
}
} onDestroy(): void
生命周期回调,在销毁输入法应用时调用,用于资源清理。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.MiscServices.InputMethodFramework
注意事项:
相关接口间的配合/制约关系:onDestroy需配合以下接口使用:
示例:
import { InputMethodExtensionAbility } from '@kit.IMEKit';
class InputMethodExt extends InputMethodExtensionAbility {
onDestroy(): void {
// 销毁面板、取消事件订阅等清理工作
console.info('onDestroy');
}
} InputMethodExtensionAbility不支持以下模块的引用。
| Kit | 模块 |
|---|---|
| Ability Kit | |
| Background Tasks Kit | @ohos.resourceschedule.backgroundTaskManager (后台任务管理) |
| Basic Services Kit | @ohos.account.osAccount (系统账号管理) |
| Connectivity Kit | @ohos.nfc.cardEmulation (标准NFC-cardEmulation) |
| Location Kit | |
| Telephony Kit |