は次のとおりです。
//final String LATIN = "com.android.inputmethod.latin/.LatinIME";
// 'this' is an InputMethodService
try {
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
final IBinder token = this.getWindow().getWindow().getAttributes().token;
//imm.setInputMethod(token, LATIN);
imm.switchToLastInputMethod(token);
} catch (Throwable t) { // java.lang.NoSuchMethodError if API_level<11
Log.e(TAG,"cannot set the previous input method:");
t.printStackTrace();
}
あなたは、そのIDあなたが知っている特定の入力方法に切り替えたい場合は、あなたのように行うことができますコメントアウトされた行は示唆しています。
EDIT @pRaNaYは、サイレント編集で単一の.getWindow()
を提案しました(履歴を見るには、下の「編集」をクリックしてください)。 Android 2.3では動作しなかったことを覚えています。ドキュメントを参照すると、最初の呼び出しInputMethodService.getWindow()
はDialog
(サブクラスはWindow
ではない)を返し、2番目の呼び出しDialog.getWindow()
はWindow
を返します。 Dialog.getAttributes()
はありません。したがって、単一の.getWindow()
でコンパイルされません。
)最終IBinderトークン= this.getWindow()。getWindow()。getAttributes()。token; – Ram
プロジェクトがInputMethodServiceであり、現在ユーザーによって選択されている場合は、サービスクラスのインスタンスを取得する方法 – 18446744073709551615
私は混乱しています、この解決策は@Raghav Soodが言っていたことと矛盾していませんか?現在アクティブな入力メソッドのトークンを持つアプリケーションまたはサービスから呼び出すことができます。 –