一、 系统设定默认语言规则
系统预置语言,即在 makefile 文件中定义的语言;
– 位置:mediatek/config/${Project}/ProjectConfig.mk,默认第一个是系统默认语言
刷机过后,开机重启,如果未插卡,系统语言为预置的语言;
插入SIM卡过后,系统语言根据 SIM 卡来改变, 默认会把刷机过后第一次插的 SIM 卡的语言设置为默认语言;(如果sim的mcc可以在内置的mcc表中找到)
如果用户没有手动在 Settings 里面设置语言,以后系统语言一直是默认语言(第一次插的 SIM 卡的语言),即使是插入其它国家的卡,系统语言也不会变;
如果用户在 Settings 里面手动设置了语言,以后系统语言会为设置后的语言,无论插入什么卡,系统语言不会变,一直为用户手动设置后的语言。
MTK默认设计是如果手机有插卡,那么在开机是会读取SIM的imsi取出mcc,然后通过mcc来查找对应的language,并设置为手机默认语言(相关文件MccTable.javaframeworks\opt\telephony\src\java\com\android\internal\telephony).
二、 修改默认语言
如果想手机默认语言不随SIM的MCC走,请按照如下修改:
在setLocaleFromMccIfNeeded()函数中
//String language = MccTable.defaultLanguageForMcc(mcc); <<注释掉此语句
对于KK版本
在updateMccMncConfiguration()函数中
// locale = getLocaleFromMcc(context, mcc); <<注释掉此语句
如果手机默认语言随SIM卡走
此为operator CT的定制feature,如果有开OP03 option,默认就支持该功能。
如果想非OP03也支持该功能,请按照如下修改:
alps/mediatek/frameworks/base/op/java/com/mediatek/op/telephony/TelephonyExt.java中, 使方法isSetLanguangBySIM()返回true,那么手机的默认语言会使用SIM中的EF_LI(6F05)或者EF_EPL(2F05)中的语言。这两个文件优先使用EF_LI中的,如果EF_LI没有匹配的在使用EF_EPL的。
标签:语言,系统,EF,mcc,默认,适应,修改,Sim,SIM
From: https://www.cnblogs.com/baiyunyouyou/p/18278138