2017-11-13 18 views
0

私は単純なInputMethodServiceの実装を持っています。 私のServiceにはBroadcastReceiverがあり、私のアプリケーションからのイベントを待ち受けます。 私のBRがスキャンしたテキストを取得し、現在のテキストフィールドに挿入します(自分のソフトキーボードが選択されている場合)。InputConnectionテキストコミット

InputConnection ic = getCurrentInputConnection(); 
if (ic != null) { 
    ic.commitText(text, text.length()); 
} 

マイ放送受信機が正常に動作しますが、ほとんどのデバイス上のテキストは、(Chromeブラウザの検索フィールドに、またはメッセージシステムのアプリケーションのテキストフィールドへの)現在のテキストフィールドに挿入されたことはありません:私は以下のコードを使用して、私のbroadcast receiverで 。 私のログにエラーは見られません。キャッチブロックは決してトリガーされません。

#EDIT1 edittextのようなフィールドにコミットされたテキストのようです。しかし、Webフィールドに入力することはできません(入力タイプ)。理由は何でしょうか?プログラムでテキストを挿入するには?

答えて

0

Okey。誰も答えを知らないようです。 しかし、私はそれを自分で見つけました。 commitText()メソッドを呼び出した後、InputConnectionオブジェクトのsendKeyEvent()メソッドを呼び出す必要があります。キーイベントをパラメータ:KeyEvent.ACTION_DOWN, EditorInfo.IME_ACTION_SENDを持つメソッドに入れます。それはテキスト挿入を引き起こします。アプリケーションのテキストフィールドとWebフィールドの両方で動作します。

関連する問題