Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
3240e3da
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
3240e3da
编写于
2月 21, 2023
作者:
O
openharmony_ci
提交者:
Gitee
2月 21, 2023
浏览文件
操作
浏览文件
下载
差异文件
!14889 【输入法框架】InputMethodExtentionAbility开发指南中增加签名指导说明
Merge pull request !14889 from Hollokin/master
上级
0b9d35c8
151f6610
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
34 deletion
+36
-34
zh-cn/application-dev/application-models/inputmethodextentionability.md
...ion-dev/application-models/inputmethodextentionability.md
+36
-34
未找到文件。
zh-cn/application-dev/application-models/inputmethodextentionability.md
浏览文件 @
3240e3da
...
...
@@ -19,7 +19,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
> 如果服务已创建,再次启动该InputMethodExtensionAbility不会触发onCreate()回调。
-
**onDestroy**
当不再使用服务且准备将
其销毁该实例
时,触发该回调。开发者可以在该回调中清理资源,如注销监听等。
当不再使用服务且准备将
该实例销毁
时,触发该回调。开发者可以在该回调中清理资源,如注销监听等。
## 开发步骤
...
...
@@ -28,19 +28,22 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
在工程Module对应的ets目录下,右键选择“New
>
Extention Ability > InputMethod”,即可创建出InputMethodExtensionAbility的最小化模板。
> **说明:**
> 在编译输入法应用时,要使用system_core级别的签名,否则无法拉起输入法键盘。
> [签名指导](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-auto-configuring-signature-information-0000001271659465)
最小化模板为一个最基本的输入法应用,包含软键盘拉起以及输入删除功能。后续开发者可在此基础上添加功能,如隐藏键盘等,实现自己的输入法应用。
最小化模板主要包含四个文件,分别为KeyboardController.ts、InputMethodService.ts、Index.ets以及KeyboardKeyData.ts。目录如下:
```
/src/main/
├── ets/
InputMethodExtA
bility
├── ets/
inputmethodexta
bility
│ └──model/KeyboardController.ts # 显示键盘
│ └──InputMethodService.ts # 自定义类继承InputMethodExtensionAbility并加上需要的生命周期回调
│ └──pages
│ └──InputMethodExtAbility
│ └── Index.ets # 绘制键盘,添加输入删除功能
│ └── KeyboardKeyData.ts # 键盘属性定义
│ └── Index.ets # 绘制键盘,添加输入删除功能
│ └── KeyboardKeyData.ts # 键盘属性定义
├── resources/base/profile/main_pages.json
```
...
...
@@ -64,7 +67,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
onDestroy
()
{
console
.
log
(
"
onDestroy.
"
);
this
.
context
.
destroy
()
this
.
context
.
destroy
()
;
}
}
```
...
...
@@ -72,16 +75,16 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
2.
KeyboardController.ts文件。
```
ts
import
inputMethodEngine
from
'
@ohos.inputMethodEngine
'
import
display
from
'
@ohos.display
'
import
windowManager
from
'
@ohos.window
'
import
inputMethodEngine
from
'
@ohos.inputMethodEngine
'
;
import
display
from
'
@ohos.display
'
;
import
windowManager
from
'
@ohos.window
'
;
// 调用输入法框架的getInputMethodAbility方法获取实例,并由此实例调用输入法框架功能接口
globalThis
.
inputAbility
=
inputMethodEngine
.
getInputMethodAbility
();
export
class
KeyboardController
{
mContext
// 保存InputMethodExtensionAbility中的context属性
WINDOW_TYPE_INPUT_METHOD_FLOAT
=
2105
// 定义窗口类型,2105代表输入法窗口类型,用于创建输入法应用窗口
mContext
;
// 保存InputMethodExtensionAbility中的context属性
WINDOW_TYPE_INPUT_METHOD_FLOAT
=
2105
;
// 定义窗口类型,2105代表输入法窗口类型,用于创建输入法应用窗口
windowName
=
'
inputApp
'
;
private
windowHeight
:
number
=
0
;
private
windowWidth
:
number
=
0
;
...
...
@@ -101,32 +104,31 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
public
onDestroy
():
void
// 应用生命周期销毁
{
this
.
unRegisterListener
();
// 注销事件监听
var
win
=
windowManager
.
findWindow
(
this
.
windowName
)
win
.
destroyWindow
()
// 销毁窗口
let
win
=
windowManager
.
findWindow
(
this
.
windowName
);
win
.
destroyWindow
()
;
// 销毁窗口
this
.
mContext
.
terminateSelf
();
// 销毁InputMethodExtensionAbility服务
}
private
initWindow
():
void
// 初始化窗口
{
display
.
getDefaultDisplay
().
then
(
dis
=>
{
var
dWidth
=
dis
.
width
;
var
dHeight
=
dis
.
height
;
var
keyHeightRate
=
0.47
;
var
keyHeight
=
dHeight
*
keyHeightRate
;
this
.
windowWidth
=
dWidth
;
this
.
windowHeight
=
keyHeight
;
this
.
nonBarPosition
=
dHeight
-
keyHeight
let
dis
=
display
.
getDefaultDisplaySync
();
let
dWidth
=
dis
.
width
;
let
dHeight
=
dis
.
height
;
let
keyHeightRate
=
0.47
;
let
keyHeight
=
dHeight
*
keyHeightRate
;
this
.
windowWidth
=
dWidth
;
this
.
windowHeight
=
keyHeight
;
this
.
nonBarPosition
=
dHeight
-
keyHeight
;
var
config
=
{
name
:
this
.
windowName
,
windowType
:
this
.
WINDOW_TYPE_INPUT_METHOD_FLOAT
,
ctx
:
this
.
mContext
}
windowManager
.
createWindow
(
config
).
then
((
win
)
=>
{
// 根据窗口类型创建窗口
win
.
resize
(
dWidth
,
keyHeight
).
then
(()
=>
{
win
.
moveWindowTo
(
0
,
this
.
nonBarPosition
).
then
(()
=>
{
win
.
setUIContent
(
'
pages/InputMethodExtAbility/Index
'
).
then
(()
=>
{
});
let
config
=
{
name
:
this
.
windowName
,
windowType
:
this
.
WINDOW_TYPE_INPUT_METHOD_FLOAT
,
ctx
:
this
.
mContext
}
windowManager
.
createWindow
(
config
).
then
((
win
)
=>
{
// 根据窗口类型创建窗口
win
.
resize
(
dWidth
,
keyHeight
).
then
(()
=>
{
win
.
moveWindowTo
(
0
,
this
.
nonBarPosition
).
then
(()
=>
{
win
.
setUIContent
(
'
pages/InputMethodExtAbility/Index
'
).
then
(()
=>
{
});
});
});
...
...
@@ -153,7 +155,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
globalThis
.
keyboardController
=
kbController
;
})
globalThis
.
inputAbility
.
on
(
'
inputStop
'
,
(
imeId
)
=>
{
if
(
imeId
==
"
com.example.kikainput/InputDemoService
"
)
{
if
(
imeId
==
"
包名/Ability名
"
)
{
this
.
onDestroy
();
}
});
...
...
@@ -162,12 +164,12 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
private
unRegisterListener
():
void
{
globalThis
.
inputAbility
.
off
(
'
inputStart
'
);
globalThis
.
inputAbility
.
off
(
'
inputStop
'
);
globalThis
.
inputAbility
.
off
(
'
inputStop
'
,
()
=>
{}
);
globalThis
.
inputAbility
.
off
(
'
keyboardShow
'
);
}
private
showHighWindow
()
{
var
win
=
windowManager
.
findWindow
(
this
.
windowName
)
let
win
=
windowManager
.
findWindow
(
this
.
windowName
)
win
.
resize
(
this
.
windowWidth
,
this
.
windowHeight
).
then
(()
=>
{
win
.
moveWindowTo
(
0
,
this
.
nonBarPosition
).
then
(()
=>
{
win
.
showWindow
().
then
(()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录