从InputConnection获取EditText中的所有文本的更好方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从InputConnection获取EditText中的所有文本的更好方法是什么?相关的知识,希望对你有一定的参考价值。

我写了一个IME(InputMethodService),我需要从它正在编辑的EditText中获取所有文本。我知道一种方式:

InputConnection inputConnection = getCurrentInputConnection();
inputConnection.append(inputConnection.getTextBeforeCursor(9999, 0))
.append(inputConnection.getTextAfterCursor(9999, 0));

它有效,但看起来非常愚蠢和笨重。然而,没有这样的方法InputConnection.getText()

有没有更好的办法?

附:我无法从我的IME访问EditText,因为它属于父app,所以请不要告诉我使用EditText.getText(),除非你知道一种获取EditText的方法!

答案

这也是另一种方法:

inputConnection.performContextMenuAction(android.R.id.selectAll);
CharSequence sData =  inputConnection.getSelectedText(0);
另一答案

我的解决方案是使用getExtractedText()。我不确定这是否有一些限制,但到目前为止对我有用。

CharSequence currentText = inputConnection.getExtractedText(new ExtractedTextRequest(), 0).text;

以上是关于从InputConnection获取EditText中的所有文本的更好方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从画廊插入到 EditTex 视图?

非活动 InputConnection 上的 beginBatchEdit

用户更改选择时如何将撰写文本提交给 InputConnection

输入法InputConnection

所有 EditText 框中的非活动 InputConnection 警告

Android 键盘 InputConnection setSelection 不适用于 unicode?