我正在编写一个使用编辑文本的应用程序。我想知道用户在oncreate方法中输入的语言是什么,或者键盘输入类型何时更改。有什么方法可以设置一个监听器来获得这种改变吗?我找到的所有答案都是关于语言环境的,而不是关于输入语言的。我不想处理区域设置,区域设置在应用程序中没有影响,输入语言有影响。我用了这个密码。
private void printInputLanguages() {
List<InputMethodInfo> ims = imm.getEnabledInputMethodList();
for (InputMethodInfo method : ims) {
List<InputMethodSubtype> submethods = imm
.getEnabledInputMethodSubtypeList(method, true);
for (InputMethodSubtype submethod : submethods) {
if (submethod.getMode().equals("keyboard")) {
String currentLocale =
submethod.getLocale();
tv.setText(currentLocale);
Log.i("sara", "Available input method locale: "
+ currentLocale);
}
}
}
}
这些代码,但没有一个是完全有用的。
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String localeString = ims.getLocale();
Locale locale = new Locale(localeString);
String currentLanguage = locale.getDisplayLanguage();
谢谢你的帮助。
没有办法做到这一点。键盘的输入语言没有报告给操作系统——事实上,Android没有输入语言的概念。这是一个由第三方键盘制造商创造的想法。因此,实际上键盘可以用任何语言打字,操作系统根本不知道。