涉及到如下文件:
frameworks/base/core/java/com/android/internal/app/LocalePickerWithRegion.javapackages/apps/Settings/src/com/android/settings/localepicker/LocaleListEditor.javalibcore\ojluni\src\main\java\java\util\Locale.java\packages\apps\Settings\src\com\android\settings\localepicker\LocaleDragAndDropAdapter.java\frameworks\base\core\java\com\android\internal\app\LocaleStore.java\frameworks\base\core\java\com\android\internal\app\LocalePicker.java\packages\apps\Settings\src\com\android\settings\localepicker\LocaleListEditor.java\frameworks\base\core\res\res\values\locale_config.xml
N0 语言列表分析文档:
MTK 有一篇《Android N Language》的文档,这里因为一些原因不能上传。
1、修改 \packages\apps\Settings\res\values\arrays.xml
<!-- START. Add more languages to Language preferences. By ShawnXiaFei, 20170509. --><string-array name="preset_language_tags"><item>"hi-IN"</item> <!-- Hindi (India) --><item>"gu-IN"</item> <!-- Gujarati (India) --><item>"bn-IN"</item> <!-- Bengali (India) --><item>"pa-IN"</item> <!-- Punjabi (Gurmukhi,India) --><item>"ur-IN"</item> <!-- Urdu (India) --><item>"ar-YE"</item> <!-- Arabic (Yemen) --><item>"ta-IN"</item> <!-- Tamil (India) --><item>"te-IN"</item> <!-- Telugu (India) --><item>"kn-IN"</item> <!-- Kannada (India) --><item>"ml-IN"</item> <!-- Malayalam (India) --><item>"ne-IN"</item> <!-- Nepali (India) --><item>"af-NA"</item> <!-- Afrikaans (Namibia) --><item>"fo-DK"</item> <!-- Faroese (Denmark) --><item>"fa-AF"</item> <!-- Persian (Afghanistan) --><item>"fil-PH"</item> <!-- Filipino (Philippines) --><item>"si-LK"</item> <!-- Sinhala (Sri Lanka) --></string-array><!-- END. Add more languages to Language preferences. By ShawnXiaFei, 20170509. -->
2、修改 \packages\apps\Settings\src\com\android\settings\Settings.java
public class Settings extends SettingsActivity {/// START. Add more languages to Language preferences. By ShawnXiaFei, 20170508.@Overrideprotected void onCreate(Bundle savedState) {/// must call super.super.onCreate(savedState);/// check first start.SharedPreferences sp = getPreferences(MODE_PRIVATE);boolean isFirstStart = sp.getBoolean("isSettingsFirstStart", true);android.util.Log.e("Shawn", "onCreate, isFirstStart = "+isFirstStart);if(isFirstStart){sp.edit().putBoolean("isSettingsFirstStart", false).apply();presetLanguage(getResources().getStringArray(R.array.preset_language_tags););}}/// preset language list.private void presetLanguage(String[] languageTags){// do not need to preset.if (null == languageTags || 0 == languageTags.length) {return;}// alreday exist in list.LocaleList localeList = LocalePicker.getLocales();List<Locale> newList = new ArrayList<>();for(int i = 0 ; i < localeList.size() ; i++){Locale locale = localeList.get(i);String tag = locale.toLanguageTag();if(!newList.contains(locale)){newList.add(locale);}else{android.util.Log.e("Shawn", "old exist, tag = "+tag);}}// new list.for(String tag : languageTags){Locale locale = Locale.forLanguageTag(tag);if(!newList.contains(locale)){newList.add(locale);}else{android.util.Log.e("Shawn", "new exist, tag = "+tag);}}// reset to preference.localeList = new LocaleList(newList.toArray(new Locale[0]));LocalePicker.updateLocales(localeList);}/// END. Add more languages to Language preferences. By ShawnXiaFei, 20170508.......}
