如何获得当前的键盘语言?

时间:2016-04-28 11:15:07

标签: android keyboard swift-keyboard

我必须在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”

如何正确使用当前的键盘语言?

1 个答案:

答案 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);
          }
       }
    }
 }