刷機過後,開機重啟,如果未插卡,系統語言為預置的語言;插入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,則可以實現每次插卡均可自適應(除手動設定語言外)。