当用户去Query当前的网络运营商的时候, MD会报上来一些网络运营商,结果如下:
12-09 14:31:10.313479 1191 1228 I AT : [0] AT< +COPS:
(1,“BGD BL”,“BGDBL”,“47003”,“03F2”,7),
(1,“robi axiata”,“robi”,“47002”,“1393”,7),
(1,“47001”,“47001”,“47001”,“2743”,7),
(1,“BGD BL”,“BGDBL”,“47003”,“02EE”,2),…,(0-3),(0-2) (RIL_CMD_READER_1, tid:496938079472)
问题1: 经常有客户会问,比如47001这个运营商对应的运营商名称是什么?
回答: 可参考MtkRIL.java 中的lookupOperatorName这个Function.
基本上这个函数会分4步去Query当前的结果:
Step1: 首先从SIM卡中的(OPL/PNN)去读取相关的Operator Name.
Step2: 如果Step1没有获取到, 那么就从SIM卡中的CPHS去获取相关的OperatorName.
Step3: 如果Step2没有获取到, 那么接下来就会去NITZ相关的property中获取OperatorName, 相关MD上报的URC是:+CIEV:10,***
Step4: 如果Step3中没有获取到, 那么接下来就要从Device存储的File当中去获取, 如spn_config.xml
问题2: 这个时候,也有客户会问, 这个逻辑是不是Mtk内部的?
回答: 遵从了3GPP的Spec规定, 3GPP的规定如下:
Spec的出处是22.101 A.3/A.4.
Spec的内容如下:
1,It shall be possible to store on the USIM at least 10 PLMN Identifications (MCC+MNC combination and optionally the LAI) for which the same PLMN name shall be displayed.
2,The PLMN name stored in the USIM has the highest priority, followed by the PLMN name provided by NITZ. The PLMN name stored in the ME has the lowest priority.
3,If the PLMN name stored in the USIM is not available in text format and the UE is unable to display the graphic format, thePLMN name provided by NITZ has the highest priority,
4,the PLMN name stored in the ME has the next priority.