InputConnection文本提交

时间:2017-11-13 11:51:25

标签: java android android-service

我有一个简单的InputMethodService实现。 在我的Service我有一个BroadcastReceiver,它会侦听我的应用程序中的事件。 我的BR获取扫描文本并将其插入当前文本字段(如果选择了我自己的软键盘)。 在我的broadcast receiver我使用下面的代码:

InputConnection ic = getCurrentInputConnection();
if (ic != null) {
     ic.commitText(text, text.length());
}

我的广播接收器工作正常,但在大多数设备上,文字从未插入当前文本字段(进入Chrome浏览器搜索字段,或进入消息系统应用程序中的文本字段)。 我看到我的日志中没有错误,尝试catch块也从未触发过。

#EDIT1 似乎将文本提交到类似edittext的字段中。但永远不要进入网络领域(输入类型)。可能是什么原因?如何以编程方式插入文本?

1 个答案:

答案 0 :(得分:0)

奥基。似乎没有人知道答案。 但我自己找到了。 调用commitText()方法后,您需要在sendKeyEvent()对象上调用InputConnection方法。将键事件放入带参数的方法:KeyEvent.ACTION_DOWN, EditorInfo.IME_ACTION_SEND。这将触发文本插入。适用于应用程序文本字段和Web字段。