我试图在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
答案 0 :(得分:1)
没有办法做到这一点。键盘不会向Android报告它支持的语言列表。
事实上,大多数键盘都会将输入语言与手机的语言环境分开,以便在不重置整个手机的UI的情况下进行切换。因此操作系统不知道键盘可以写入或正在写入的语言。