Android: 从代码中确定当前活动的输入法

14

如何确定当前正在使用哪种输入法 - 用户可以通过长按文本编辑字段来更改输入方法(软键盘) - 从代码中,如何确定用户选择了哪种输入法

如何确定当前使用的输入法?用户可以通过长按文本编辑字段来更改输入法(软键盘)。从代码层面上,我们可以使用以下方法来确定用户选择了哪种输入法:


很难确定你在这里询问什么。你能提供更多的上下文和一些代码来突出问题吗? - p.campbell
抱歉 - 我添加了 Android 标签 - 在 Android 中,用户可以通过长按编辑字段来更改输入方法,我想知道的是如何查询 Android 系统以确定用户选择了哪个可能的输入方法。 - kate bruce
你的应用程序为什么要知道这个? - adamp
1
我正在编写一款软件,用于评估各种输入方法(在本例中为软键盘)的相对有效性,即输入给定输入字符串所需的时间。与其询问用户当前使用的键盘,不如直接查询系统以了解他正在使用哪个软键盘,这样会更容易些。 - kate bruce
1个回答

30

我知道您可能不再需要这个答案,但其他人可能需要。您可以使用以下代码行获取正在使用的输入法的字符串ID:

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

如果您想获取有关当前键盘的更多信息,可以使用:

    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);

        if (imi.getId().equals(Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD))) {

            //imi contains the information about the keyboard you are using
            break;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接