11

IME(InputMethodService)を作成しましたが、編集中のEditTextからすべてのテキストを取得する必要があります。私は1つの方法を知っています:

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

それは動作しますが、それはかなり愚かで不格好なようです。ただし、そのような方法はありませんInputConnection.getText()

もっと良い方法はありますか?

PSエディットテキストは親アプリに属しているため、IMEからアクセスできません。エディットテキストを取得する方法がわからない限り、EditText.getText()を使用するように言わないでください。

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 に答える