InputConnection 文本提交
InputConnection text committing
我有一个简单的 InputMethodService
实现。
在我的 Service
中,我有一个 BroadcastReceiver
,用于侦听来自我的应用程序的事件。
我的 BR 获取扫描文本并将其插入当前文本字段(如果选择了我自己的软键盘)。
在我的 broadcast receiver
中,我使用以下代码:
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.commitText(text, text.length());
}
我的广播接收器工作正常,但在大多数设备上,文本从未插入到当前文本字段中(插入 Chrome 浏览器搜索字段,或消息系统应用程序中的文本字段)。
我在我的日志中没有看到任何错误,try catch 块也从未触发过。
#编辑1
看起来像是提交到类似编辑文本的字段中的文本。但永远不要进入网络领域(输入类型)。可能是什么原因?如何以编程方式插入文本?
好的。似乎没有人知道答案。
但是我自己找到了。
调用 commitText()
方法后,您需要在 InputConnection
对象上调用 sendKeyEvent()
方法。将按键事件放入带有参数的方法中:KeyEvent.ACTION_DOWN, EditorInfo.IME_ACTION_SEND
。这将触发文本插入。适用于应用程序文本字段和网络字段。
我有一个简单的 InputMethodService
实现。
在我的 Service
中,我有一个 BroadcastReceiver
,用于侦听来自我的应用程序的事件。
我的 BR 获取扫描文本并将其插入当前文本字段(如果选择了我自己的软键盘)。
在我的 broadcast receiver
中,我使用以下代码:
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.commitText(text, text.length());
}
我的广播接收器工作正常,但在大多数设备上,文本从未插入到当前文本字段中(插入 Chrome 浏览器搜索字段,或消息系统应用程序中的文本字段)。 我在我的日志中没有看到任何错误,try catch 块也从未触发过。
#编辑1 看起来像是提交到类似编辑文本的字段中的文本。但永远不要进入网络领域(输入类型)。可能是什么原因?如何以编程方式插入文本?
好的。似乎没有人知道答案。
但是我自己找到了。
调用 commitText()
方法后,您需要在 InputConnection
对象上调用 sendKeyEvent()
方法。将按键事件放入带有参数的方法中:KeyEvent.ACTION_DOWN, EditorInfo.IME_ACTION_SEND
。这将触发文本插入。适用于应用程序文本字段和网络字段。