从InputConnection获取EditText中所有文本的更好方法



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

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

它可以工作,但看起来很愚蠢和笨拙。然而,没有这样的方法InputConnection.getText() .

有更好的方法吗?

注:我不能从我的IME访问EditText,因为它属于父应用程序,所以请不要告诉我使用EditText. gettext(),除非你知道一种方法来获得EditText!

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

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

还有另一种方法:

inputConnection.performContextMenuAction(android.R.id.selectAll);
CharSequence sData =  inputConnection.getSelectedText(0);

相关内容

  • 没有找到相关文章

最新更新