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。这将触发文本插入。适用于应用程序文本字段和网络字段。