现在的位置: 首页 > 综合 > 正文

MTK 如何修改使得运营商名称显示随系统语言变化而变化

2014年09月05日 ⁄ 综合 ⁄ 共 1446字 ⁄ 字号 评论关闭
[DESCRIPTION]

 
目前设计运营商名称显示不会随着系统语言变化而变化,如果要实现请参考以下做法。
 
 

[SOLUTION]
 
需要实现此功能,请参考一下步骤:
1. 将frameworks\opt\telephony\src\java\com\android\internal\telephoy\gsm\SIMRecords.java中将定义及引用到mIsWaitingLocale这个变量的地方都移除。
 
2. 在mediatek\frameworks\base\telephony\java\com\mediatek\telephony\SimInfoUpdate.java的setDefaultNameForNewSim方法中找到
if (simDisplayName == null ||
      (oriNameSource == SimInfoManager.DEFAULT_SOURCE && strName != null))
改为

if (simDisplayName == null ||
      (oriNameSource == SimInfoManager.DEFAULT_SOURCE && strName != null) ||
      (oriNameSource == SimInfoManager.SIM_SOURCE && strName != null && !strName.equals(simDisplayName)))
 
注意:此修改并不适用所有运营商,只有几个特殊的运营商支持语言变化,对应的MCCMNC可以查看RIL.java的lookupOperatorName方法中针对MCCMNC的判断。如果想要添加其他运营商语言适配,请参考如修改:
运营商名称支持多语言

例如spn-conf.xml中有个字段<spnOverrides numeric="3100" spn="NEPW"/>,也就是运营商的plmn是3100,其对应的名称是“NEPW”。当运营商的来源是xml时,那这种case下这个运营商的名称会显示“NEPW”,那即使当前手机切换到其他语言,仍然显示的是“NEPW”。
 
[SOLUTION]
有了上面的背景,那就切入正题,要想在这种case下(当运营商的来源是xml),就要在res中添加一个Strings,然后在添加各种语言的翻译,然后显示的时候就用res中string,而不用读取xml中的spn了。 其他做法如下:
(1)在alps\mediatek\frameworks\base\res\res\values\Strings.xml中定义个字串,其名称为A
(2)在同res目录下的其他values添加A对应的语言翻译
(3)在alps\mediatek\frameworks\base\res\res\values\public.xml中添加A的id, id取值type为string的那一组的最后一个string的id+1 
(4)在alps\frameworks\opt\telephony\src\java\com\android\internal\telephony\Ril.java中的lookupOperatorName()方法,依照numeric等于A运营商的plmn,其operName就是这个字串A的内容。
 
因为运营商有很多,把所有的运营商名称都换成这个样子比较耗工作量(如果您闲没事干,就试试看看:) ),遇到客户比较关心的运营商才换好了。
 
注: 目前指支持实体运营商,MVNO还不支持

抱歉!评论已关闭.