Как получить текущий язык клавиатуры?
Я должен получить текущий выбранный язык клавиатуры в 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();
}
но клавиатура Samsung и клавиатура Swiftkey всегда возвращают язык устройства, а не выбранный язык клавиатуры. И на Swiftkey, когда язык устройства отличается от английского, он возвращает что-то подобное для всех языков:
"it_it", "ru_ru", "bg_bg"
Как правильно выбрать текущий язык клавиатуры?
1 ответ
Минимальное API должно быть 11 для getEnabledInputMethodSubtypeList сейчас. Вот что я сделал, чтобы получить доступные языки ввода:
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);
}
}
}
}