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