我正在尝试为Android创建一个自定义IME,其自定义表情符号实际上只是显示在按键上的图像。
使用InputConnection
KeyboardActionListener
,可以轻松地从键盘向焦点文字字段发送文字
InputConnection ic = getCurrentInputConnection();
ic.commitText(String.valueOf(code),1);
然而,发送图像非常具有挑战性。我已经在SO(https://github.com/chiragjain/Emoticons-Keyboard)和其他几个例子中看到了许多答案所建议的键盘示例,并且它总是使用类似于此的方法:
Spanned cs = Html.fromHtml("<img src ='"+ index +"'/>", imageGetter, null);
int cursorPosition = content.getSelectionStart();
content.getText().insert(cursorPosition, cs);
虽然如果聚焦文本字段是程序员创建的活动的一部分,这看起来效果很好,但它不适用于OS文本字段(例如,当尝试添加时,它会添加空方块而不是图像图像到我写的电子邮件消息。
我还尝试了其他方法,在按下时从虚拟键盘发送我的自定义图像。我尝试使用剪贴板复制粘贴图像的二进制文件和链接,但它不起作用。
我尝试在将图像保存到媒体库后发送图像。这样做效果更好,它允许用户选择接收图像的应用程序,当应用程序收到图像时,图像会正确显示。但是,它始终会创建一条新消息。例如,我在电子邮件应用程序中,打开自定义键盘并选择图像。这启动了意图,它带来了选择器。我选择邮件,图像被添加到新邮件中,而不是我当前正在编辑的邮件。
我现在已经没想完了。甚至可以在虚拟键盘上显示自定义emoticoones / images,并以可靠的方式将它们发送到OS应用程序?