Android:以编程方式切换到其他IME
作者:互联网
http://developer.android.com/guide/topics/text/creating-input-method.html#GeneralDesign
内容如下:
由于可以在设备上安装多个IME,因此为用户提供了一种直接从输入法UI切换到不同IME的方法.
假设我有两个输入方法的源,可以修改它.
我想让用户快速切换它们,并准备为此保留一个按钮.
如何“直接从输入法UI切换到不同的IME”?
解决方法:
从当前输入法切换到上一个输入法是:
//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的特定输入法,您可以按照注释掉的行建议.
编辑@pRaNaY在静默编辑中建议单个.getWindow()(单击下面的“编辑”以查看历史记录).我记得它不适用于Android 2.3;如果您查阅文档,您将看到第一个调用InputMethodService.getWindow()返回一个Dialog(它不是Window的子类),第二个调用Dialog.getWindow()返回一个Window.没有Dialog.getAttributes(),所以使用单个.getWindow()它甚至不会编译.
标签:ime,android 来源: https://codeday.me/bug/20190930/1836346.html