【移动通信】运营商名称显示优先级

用过手机的人都知道,在手机上方通知栏位置,一般都有一个运营商名称,比如中国移动(CMCC),中国联通(UNICOM)…

1,为什么手机要显示运营商名称?

对于国内用户来说,移动和联通、电信之间是没有漫游,在开卡时即选定了运营商,手机装上SIM卡就一直显示选定的运营商,似乎运营商名称显示是多余的;

其实,在国外运营商很多,不同运营商之间存在漫游协议,用户在漫游时收费也是不同的,因此有必要显示用户当前所使用的运营商名称;

另外,只有当注册到该运营商网络时才会显示该运营商名称,否则会显示“无网络”或者“仅限紧急呼叫”,如此看到运营商名称,也意味着手机有信号,同时一般信号强度指示也在旁边;

还有,运营商名称显示本身也是对该运营商的商业宣传,其重要性不言而喻,尤其是对将来的虚拟运营商

2,运营商名称显示的流程是什么样的?

以下内容为转载:

1. (U)SIM卡中存放的PLMN和PNN内容。具体显示哪个内容根据SPN文件设置以及当前登陆网络决定。2. 网络下发MM中的数据3. ME制造时预置的PLMN以及对应的显示名称事实上,还有第四种显示方式,就是直接显示MCC+MNC。例如中国移动前几年刚启用460 02的时候,很多手机不能识别,就直接把这个组合显示出来。注:手机在注册的时候,网络下发给手机的MM信息(Miscellaneous Messages):Full name for networkShort name for networkLocal time zoneUniversal time and local time zoneLSA IdentityNetwork Daylight Saving Time(U)SIM相关文件的作用如下1. EF_6F46_SPNb1=0: 当注册PLMN为HPLMN或者EF_SPDI所存PLMN时,不显示PNNb1=1: 当注册PLMN为HPLMN或者EF_SPDI所存PLMN时,显示PNNb2=0: 当注册PLMN既不是HPLMN也不是EF_SPDI所存PLMN时,显示SPNb2=1: 当注册PLMN既不是HPLMN也不是EF_SPDI所存PLMN时,显示SPN其他:RFU前提:根据ETSI规范,在HPLMN时,默认需要显示SPN;在VPLMN时,默认需要显示PNN2. EF_6FCD_SPDI 此文件中存放的PLMN手机进行显示时,等效视为HPLMN3. EF_6FC5_PNN用于存放Full Name和Short Name以替换手机内存所存或者网络下发的对应值。4. EF_6FC6_OPL如果卡内不存在此文件,则以6FC5的第一条记录替换HPLMN或者EPLMN的内容。如果此文件存在,则以Byte 1-7指示PLMN, Byte 8指示对应的Full Name/Short Name。其他新增两个文件EF_6FDE_SPNI和EF_6FDF_PNNI,可以支持图标显示。实用举例Q: 如果有一个虚拟运营商,它在自己的国家X省使用自己的网络(MCC=123,MNC=01),在其他地方租用别的运营商的网络。在Y省租用MNOY(MCC=123,MNC=02)的网络,在Z省租用MNOZ的网络(MCC=123,MNC=03)。它要求在XY省只显示MVNO A,在Z省显示MVNO A和MVNO A+,漫游出国的时候显示MVNO A和漫游伙伴的名字。请问,我们在USIM卡中应该如何设置(假设手机能够完美的支持SPDI和PNN的要求)?A:1. 将SPN的第一个字节设置为002. 将PLMN Y(MCC=123, MNC=02)放入EF_6FCD_SPDI文件3. 在EF_6FC5_PNN中存入MVNO A+4. 将PLMN Z(MCC=123,, MNC = 03)放入EF_6FC6_OPL,并指向PNN文件的对应记录参考规范:ETSI TS 124.008 V7.4.0ETSI TS 122.101 V9.11.0ETSI TS 131.102 V10.3.0

当然,这里OPN或SPN的获取,并不只能从sim ef文件中获取,也有可能,比如Android智能机,获取的方式是不同的,存放在\system\etc下的spn-conf.xml文件中,打开spn-conf.xml可以看到如下代码:<?xml version="1.0" encoding="utf-8"?><spnOverrides><!–@Author: HTC Shawn Ku@Date: 2010/02/23

This is a list for operator specific SPNs.We will use below SPN for instead if numeric is matched.Format is listed as below:

<spnOverridesnumeric="MCC+MNC"spn="SPN Name"/>–>

<spnOverridenumeric="44020"spn="SoftBank"/></spnOverrides>

<spnOverridenumeric="46000"spn="中国移动"/>

如上所示,可根据所希望显示的PLMN,修改对应字串,某些用户有爱的显示为中国移不动或者用户自己的姓名等等,类似的道理。

问题解决:

这个问题,本身严格来说不是故障,因为代码的编写符合标准要求,由于2G和3G SIM未启用OPN和SPN,因此获取的字串为空,直接走到了获取PLMN逻辑,4G SIM中网络运营商预留了默认的英文字串,原则上也并无不妥,但欠完美。作为研发,我个人建议不必修改,但此处体现了我的局限,产品经理坚持修改,并建议保留优先级逻辑,但若显示为英文字串,则修改为中文,但我认为这样的修改可实现却并不合标准,且手边并无联通4G SIM,无从得知联通SIM状况,几番讨论后,由于客户投诉,坚持修改,因此,针对移动SIM,增加临时性patch,修改获取PLMN条件,若为英文CMCC,则转入PLMN逻辑,如下:

if ((0 == network_str_ptr->wstr_len)|| (0 == MMIAPICOM_WstrStrncmp((const wchar*)network_str_ptr->wstr_ptr, (const uint8*)"CMCC", 4))) { network_str_ptr->wstr_len = MMIPHONE_MAX_OPER_NAME_LEN; MMIPHONE_GenPLMNDisplay( MMIAPIGET_SpecSim_TDOrGsm(dual_sys), &g_service_status[dual_sys].plmn, network_str_ptr->wstr_ptr, &network_str_ptr->wstr_len, FALSE); }

任何的限制,都是从自己的内心开始的。

【移动通信】运营商名称显示优先级

相关文章:

你感兴趣的文章:

标签云: