如何在android中以編程方式獲取在「語言和輸入設置」下列出的所有已安裝或支持的語言的列表。我已經使用Resources.getSystem()。getAssets()。getLocales(),但它只給我這種語言的代碼,如en,en_us,但我需要代碼和顯示名稱。 我也嘗試過使用Locale.getAvailableLocales(),但它給我重複的項目和太大的列表。在Android手機中列出所有已安裝或支持的語言
請告訴我這樣做的正確方法是什麼。
如何在android中以編程方式獲取在「語言和輸入設置」下列出的所有已安裝或支持的語言的列表。我已經使用Resources.getSystem()。getAssets()。getLocales(),但它只給我這種語言的代碼,如en,en_us,但我需要代碼和顯示名稱。 我也嘗試過使用Locale.getAvailableLocales(),但它給我重複的項目和太大的列表。在Android手機中列出所有已安裝或支持的語言
請告訴我這樣做的正確方法是什麼。
getAvailableLocales()
給你所有的語言,但作爲一個/多個國家可以有相同的語言,它是重複的,你可以使用
public ArrayList<String> getAllLanguages()
{
Locale[] locales = Locale.getAvailableLocales();
ArrayList<String> languages=new ArrayList<String>();
for(Locale temp : locales)
{
if(!languages.Contains(temp.getDisplayLanguage()))
languages.Add(temp.getDisplayLanguage());
}
return languages;
}
好的過濾它,這將努力獲得語言下輸入設置
private ArrayList<String> getInputLanguages() {
ArrayList<String> inputlanguages=new ArrayList<String>();
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();
Locale locale = new Locale(localeString);
String currentLanguage = locale.getDisplayLanguage();
inputlanguages.Add(currentLanguage);
}
}
}
return inputlangauges;
}
是你可以使用獲得通過 列表一樣下languageand輸入設置
String[] systemLocaleIetfLanguageTags = Resources.getSystem().getAssets().getLocales();
感謝Rajan提供了一個很好的邏輯,我實現了這一點,現在給了我獨特的語言列表。如果我只想列出「語言和輸入設置」下列出的那些語言,那麼我需要爲此做些什麼。 感謝您的幫助。 –
我想這些是語言,它屬於語言和輸入設置 –
感謝您的答覆。我已在「語言和輸入設置」下檢查了語言列表,但該列表與使用Locale.getAvailableLocales()的列表不同,您對此有任何想法。 非常感謝你在高級.. –