我必须在android中获得当前选择的键盘语言。到目前为止,我正在使用它:
InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
if(ims != null)
{
String lName = ims.getLocale();
Locale locale = new Locale(lName);
String lang = locale.getLanguage();
}
但三星键盘和Swiftkey键盘始终返回设备的语言,而不是所选的键盘语言。在Swiftkey上,当设备的语言与英语不同时,它会为所有语言返回类似的内容:
“it_it”,“ru_ru”,“bg_bg”
如何正确使用当前的键盘语言?
答案 0 :(得分:0)
getEnabledInputMethodSubtypeList的最小API必须为11 现在这就是我为获得可用输入语言所做的工作:
private void printInputLanguages() {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
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();
Log.i(TAG, "Available input method locale: " + currentLocale);
}
}
}
}