如何以编程方式在 phone 的键盘之间切换

How to programmatically switch between the phone's keyboards

总结:

尝试开发一款应用程序,只需通过代码中的 if-else 语句即可在安装在 phone 上的键盘之间切换。是否可以在不对设备进行 root 的情况下执行此操作?

请注意:

我的拙劣研究只导致能够在 root 设备上执行此操作,否则这是不可能的,应该由用户手动完成 - 但这是相对较旧的信息(从 2011 年开始),所以现在可能吗?

背景故事:

目前,(在教程的帮助下),我们制作了一个自定义键盘的应用程序,我们想让该应用程序(代表用户)以编程方式在自定义键盘和 phone的默认键盘。

我们是如何做到的:

在其中一个实现了 KeyboardView 的 类 中,有这样一段代码:

public View onCreateInputView() {
    KeyboardView kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
    Keyboard keyboard = new Keyboard(this, R.xml.qwerty);
    kv.setKeyboard(keyboard);
    kv.setOnKeyboardActionListener(this);
    return kv;
} 

似乎这个语句:kv.setKeyboard(keyboard);可以改变键盘,所以也许如果我们添加一个类似的语句但改变它的参数以引用默认键盘,那么是否可以有效地进行切换? 如果是那么如何引用默认键盘?

我认为您不能以编程方式更改切换键盘。但是您可以使用键盘选择器。

InputMethodManager ime=(InputMethodManager)getActivity().getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if(ime!=null) {
                   ime.showInputMethodPicker();
                }

P.S: 这只会显示用户在设置中设置的活动键盘