在做繁體版Android 4.0項目時,收到個語言問題,在手機初始化後開機,剛開始顯示繁體中文,但隨着網絡信號出現,語言被更改成簡體中文了。非常疑惑,看了下MccTalbe.java這個文件代碼(電話模塊),發現會去讀2個屬性,如下:
String l = SystemProperties.get("persist.sys.language");
String c = SystemProperties.get("persist.sys.country");
如果沒有這2個屬性,就會去用自己SIM卡的語言主動更改系統語言,也就是爲什麼出現信號後系統語言改變的原因了。
然後找到出廠的語言是通過屬性來設置的,如下:
編譯腳本路徑:/build/tools/buildinfo.sh
ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE
ro.product.locale.region=$PRODUCT_DEFAULT_REGION
最後在腳本後面追加缺少的"persist.sys.language"和"persist.sys.country"屬性,編譯系統,測試成功。 總結,其實用戶主動更改語言設置也會去調用ActivityManagerService.java類寫persist.sys.language的屬性。