一、 系統設定默認語言規則
系統預置語言,即在 makefile 文件中定義的語言;– 位置:mediatek/config/${Project}/ProjectConfig.mk,默認第一個是系統默認語言
- 刷機過後,開機重啓,如果未插卡,系統語言爲預置的語言;插入SIM卡過後,系統語言根據 SIM 卡來改變, 默認會把刷機過後第一次插的 SIM 卡的語言設置爲默認語言;(如果sim的mcc可以在內置的mcc表中找到)如果用戶沒有手動在 Settings 裏面設置語言,以後系統語言一直是默認語言(第一次插的 SIM 卡的語言),即使是插入其它國家的卡,系統語言也不會變;如果用戶在 Settings 裏面手動設置了語言,以後系統語言會爲設置後的語言,無論插入什麼卡,系統語言不會變,一直爲用戶手動設置後的語言。
二、 修改默認語言
1、 取消sim卡語言自適應
public static void updateMccMncConfiguration(Context context, String mccmnc)
MccTable.java(frameworksase elephonyjavacomandroidinternal elephony)
if (mcc != 0) {
setTimezoneFromMccIfNeeded(context, mcc);
setLocaleFromMccIfNeeded(context, mcc);
setWifiCountryCodeFromMcc(context, mcc);
}
每次插卡開機,當sim準備好之後,系統會走updateMccMncConfiguration這個函數,其調用這個setLocaleFromMccIfNeeded函數去根據mcc更新系統語言,可以設置是否調用這個函數來決定是否根據sim切換語言。
2、 要求每次均可以根據sim卡切換語言
public static void setSystemLocale(Context context, String language, String country)
……
config.userSetLocale = false;
config.simSetLocale = true;
……
am.updateConfiguration(config);
第一次開機插入sim卡,如果根據mcc找到相應語言,系統會把當前sim卡語言信息保存起來,以後系統無論插入任何語言的sim卡,系統語言均不會在根據sim在進行切換,其中系統是根據simSetLocale這個參數來決定是否要保存這個信息的,如果在上面把其設爲false,則可以實現每次插卡均可自適應(除手動設置語言外)。