如何在Android中获取用户设置默认键盘的ID

时间:2016-04-20 02:21:03

标签: android android-softkeyboard

我想在我的自定义键盘中创建一个按钮,按下该按钮会将键盘切换到默认用户键盘。我已经想出如何设置输入键盘:

final String LATIN = "com.android.inputmethod.latin/.LatinIME";
final IBinder token = this.getWindow().getWindow().getAttributes().token;
imm.setInputMethod(token, LATIN);

在这种情况下,按下我想要实现的按钮会将键盘切换到默认的用户指定键盘(LATIN键盘)。

问题出在这个特定的例子中,字符串已经给出了。

如何找到默认用户指定键盘的ID字符串,以便我可以设置InputMethod

1 个答案:

答案 0 :(得分:2)

您可以获取当前活动键盘的ID,如下例所示:

String id = Settings.Secure.getString(
                getContentResolver(),
                Settings.Secure.DEFAULT_INPUT_METHOD)

如果您的软键盘当前正在用于输入,则上述代码将返回键盘的ID。

但是,你可以这样做: 单击输入选择器按钮后,您可以显示输入方法列表,并让用户选择他喜欢的输入法:

InputMethodManager inputManager = (InputMethodManager) this.getBaseContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.showInputMethodPicker();

上面的代码将打开一个系统对话框,可以选择输入法。 此外,您可以在下面的代码中获取输入法列表:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        List<InputMethodInfo> mInputMethodProperties = imm.getEnabledInputMethodList();

        final int n = mInputMethodProperties.size();

        for (int i = 0; i < n; i++) {
            InputMethodInfo imi = mInputMethodProperties.get(i);
Log.d("TAG", "Input Method ID: "+ getApplicationContext().getPackageName(); }