从 InputConnection 获取 EditText 中所有文本的更好方法?
我已经编写了一个 IME(InputMethodService),我需要从它正在编辑的 EditText 中获取所有文本。我知道一种方法:
InputConnection inputConnection = getCurrentInputConnection();
inputConnection.append(inputConnection.getTextBeforeCursor(9999, 0))
.append(inputConnection.getTextAfterCursor(9999, 0));
它有效,但看起来相当愚蠢和笨重。然而,没有这样的方法InputConnection.getText()
。
有更好的办法吗?
PS 我无法从 IME 访问 EditText,因为它属于父应用程序,所以请不要告诉我使用 EditText.getText(),除非您知道获取 EditText 的方法!
I've written an IME (InputMethodService) and I need to get all the text from the EditText it is editing. I know one way:
InputConnection inputConnection = getCurrentInputConnection();
inputConnection.append(inputConnection.getTextBeforeCursor(9999, 0))
.append(inputConnection.getTextAfterCursor(9999, 0));
It works, but it seems pretty stupid and clunky. However there is no such method InputConnection.getText()
.
Is there a better way?
P.S. I cannot access the EditText from my IME because it belongs to the parent app so please don't tell me to use EditText.getText(), unless you know a way to get the EditText!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我的解决方案是使用 getExtractedText()。我不确定这是否有一些限制,但到目前为止对我有用。
My solution is to use getExtractedText(). I am not sure if this has some limitations, but has worked for me so far.
这还有另一种方法:
Here is also another way to do it: