2016-04-28 78 views
1

我必須在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

最低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); 
      } 
     } 
    } 
} 
+0

此代碼返回相同的結果作爲問題的代碼。它返回所有鍵盤語言的設備語言。 – Nikolay

相關問題