Android获得可用的输入语言

时间:2016-02-21 10:28:13

标签: android keyboard android-input-method

我试图在Android上获取可用的输入设备,为了做到这一点,我使用InputMethodManager并使用getEnabledInputMethodList()的API,如下所示:

InputMethodManager inputMgr = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    List<InputMethodInfo> inputMethodList = inputMgr.getEnabledInputMethodList();

    for (InputMethodInfo method : inputMethodList) {
        List<InputMethodSubtype> subMethods = inputMgr.getEnabledInputMethodSubtypeList(method, true);
        for (InputMethodSubtype submethod : subMethods) {
            if (submethod.getMode().equals("keyboard")) {    //Ignore voice input method
                String localeString = submethod.getLocale();
                                Locale locale = new Locale(localeString);
                                String currentLanguage = locale.getLanguage();
                                //do something...
            }
        }
    }

然而,尽管我的LG G3和MEIZU M2上还有更多输入语言,但这个API只返回1种输入语言 - 英语。 似乎此API仅在Google Nexus手机上正常运行。

有没有人试过这样做并成功了?

P.S 我已经在这个帖子上阅读了解决方案,但它没有多大帮助: how to get user keyboard language

1 个答案:

答案 0 :(得分:1)

没有办法做到这一点。键盘不会向Android报告它支持的语言列表。

事实上,大多数键盘都会将输入语言与手机的语言环境分开,以便在不重置整个手机的UI的情况下进行切换。因此操作系统不知道键盘可以写入或正在写入的语言。