11

我编写了一个 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 的方法!

4

2 回答 2

19

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

CharSequence currentText = inputConnection.getExtractedText(new ExtractedTextRequest(), 0).text;
于 2012-06-27T11:54:40.877 回答
7

这也是另一种方法:

inputConnection.performContextMenuAction(android.R.id.selectAll);
CharSequence sData =  inputConnection.getSelectedText(0);
于 2011-09-16T05:13:08.147 回答