一 网络名称显示这部分比較复杂。Spec对这也有明白的规定,依据其优先级由高往低介绍(其优先级參考TS 22.101),

1.       Enhanced Operator Name String。也就是Eons。此种方式的名称是存放在EF_PNN(PLMN Network Name, fid: 6FC5)和EF_OPL(Operator PLMN List, fid: 6FC6)中。

EF_OPL中存放的是LAC和EF_PNN中的Record Identifier,

EF_PNN中存放的是Network Name,也就是详细的名称了。

假设注冊上的网络是HPLMN,那么EF_OPL返回的Record Identifier就是1。

假设不是HPLMN的话,就依据LAC在EF_OPL中寻找相应的Record Identifier。

然后依据OPL的Record Identifier,在PNN中找相应的Network Name。

这里须要声明一下,Record Identifier是基于1的,而EF_PNN的记录是基于0的。

也就是说,Record Identifier是1。那匹配的是EF_PNN中的第0条记录。

这个分的代码能够參考SIMRecords.java中的getEonsIfExist()方法

 

2.       Common PCN Handset Specification Operator Name String,也就是CPHS ONS。须要当前注冊的是HPLMN网络,

a.       假设SIM中的CPHS ONS的长格式文件(fid:6F14, long name)读取成功,用此当作网络名称。

b.       假设SIM中的CPHS ONS的短格式文件(fid:6F18, short name)读取成功,用此当作网络名称。

这个分的代码能够參考SIMRecords.java中的读取CPHSOns文件的部分

 

 

3.       NITZ Operator Name

此名称是由所注冊的网络下发给手机的,參考TS22.042。假设网络有下发这个数据给手机。modem会通过”+CIEV: 10”把数据传给AP端,AP端会用这个数据来当成网络名称,另外AP端还会把这个数据和相应的网络PLMN一同记下来,当之后注冊上的网络仍是这个PLMN,这显示的网络名称还会是这个网络名称。

这部分的代码能够參考ril_nw.c中的onNitzOperNameReceived()

 

4.       ROM

这一个是存储在手机flash中的,眼下的存储方式是xml文件。假设是有打开支持MVNO的option。那么下面xml都依次读取,假设读取到就终止往下读了。

假设没有MVNO,那么只读取spn-conf.xml。

假设没有读取到那么显示plmn号了。

Virtual-spn-conf-by-efspn.xml

Virtual-spn-conf-by-imsi.xml

Virtual-spn-conf-by-efpnn.xml

Virtual-spn-conf-by-efgid1.xml

Spn-conf.xml

这个分的代码能够參考ril.java中的 lookupOperatorName()方法和SpnOverride类

二 接下来看还有一个重要的名称,Service Provider Name。也就是SPN。

SPN是卡中的一个文件。fid是6F46。

读取SPN首先要看看SST中是否有这个栏位,而且这个栏位是否是activity的。

常常遇到有时候在keyguard上显示的名称和状态栏上的不一样,或者明明是这个运营商的却显示另外一个运营商的名称等等奇怪的现象,这些现象有些是和SPN是有关系的。

所以我们须要了解一下SPN的显示规则。

SPN有一个字节来规定其显示规则(參考Spec TS 31.102)

这一个字节仅用到第一和第二位,

(1)当注冊到网络是HPLMN或者是在plmn属于EF_SPDI中的网络时(默认显示SPN)。该字节的第一位的取值意义:

1:须要显示PLMN

0:不须要显示PLMN

(2)当注冊到网络不是HPLMN也不在EF_SPDI中的网络时(默认显示PLMN),该字节的第二位取值意义:

1:不须要显示SPN

0:要显示SPN

这两个bit组成的值叫做display condition。这里的plmn指的是网络名称哦,不是指plmn号。所以会有遇到仅仅显示spn而不显示网络名称的情况,而且spn的名称是sim文件里读出来的,其内容不确定的。

 

三 SIM的名称

 

非常多人对这个SIM的名称和网络名称有困扰。事实上这是两个不同的东西。SIM的名称相对于网络名称简单得多。SIM 名称是SIM info中的一个栏位,sim info是Telephony.db中的一个table。

当在SIM Framework初始化时候会下如一个默认的字串当作sim名称,这个字串的内容就是com.mediatek.internal.R.string.new_sim。在SIM ready时会去读取SIM的各种record,在record读取完毕之后才依据mcc/mnc到xml去那相应的名称,然后设定到数据库其中。这个就是sim的默认名称了。假设开机之后是打开飞行模式的。那么由于不会去读取sim
record,所以sim的默认名称会一直都是com.mediatek.internal.R.string.new_sim。

 

读取record设定sim的默认名称的代码是在SIMRecords.java中的onAllRecordedsLoaded()方法,通过mcc/mnc到lookupOperatorName中读取xml(注意,有些特殊的mcc/mnc是直接读R.string中的数据)。然后通过setDefaultNameForNewSIM设定进去。

网络运营商名称显示&SIM名称显示的更多相关文章

  1. android 网络运营商的名字显示规则(锁定屏幕,下拉列表)

    一:Background & 有关flow MTK Operator name display分为两种类型的手机: 1. Sim卡名称: 从基于引导SIM卡读取IMSI到Spn-conf.xm ...

  2. 小米手机Toast显示带应用名称问题解决方法

    近期为了适配刘海屏,向公司申购了一步小米8的手机,然后测试人员那边测出来一堆适配的问题,其中有一个每一个Toast会显示app的名称+显示的内容,然后网上查找了一下解决方法记录一下,顺便封装了Toas ...

  3. 转:zTree树控件key配置之title:zTree树节点名称过长如何省略显示且鼠标移入节点上能够显示全称

    当树节点的名称有些很长时,全部显示出来显得很拥挤的情况下,我们会想到用省略节点名称来代替,当鼠标移入节点时能够显示该节点的全称.这样我们应该如何做呢? 首先,我们要在树的节点内多增加一个属性用于设置该 ...

  4. hbuilder在android手机里用chrome调试,只显示了设备名称,却没有inspect按钮

    stark 通过“菜单”->“工具”->“检查设备”打开设备检查页面,只显示了设备名称,却没有inspect按钮,要怎么办 1 赞2014-10-09 22:00 ============ ...

  5. ASPxComboBox默认情况下不显示代码和名称,特别头疼,直到发现了关键

    1.ASPxComboBox 默认不开启 AutoPostBack: 既是开启,总显示第一行(好像是个bug) 2.只好ajax,但是默认情况下不显示代码和名称,特别头疼,直到发现了关键 <dx ...

  6. php 根据ip获取城市以及网络运营商名称(利用qqwry.dat)

    根据用户IP地址判定出所在城市以及网络运营商 qqwry.dat下载地址:http://files.cnblogs.com/guangxiaoluo/qqwry.rar  解压出来即可 //获取用户真 ...

  7. iPhone使用CoreTelephony获得SIM卡网络运营商资讯和通话资料

    注意要加头文件目录 /System/Library/Frameworks/CoreTelephony.framework/Headers 到 build 设置 Header Search Paths, ...

  8. Xcode模拟器不显示SDK版本,反而显示设备ID的解决办法

    今天在应用程序中修改了Xcode app 的名称,结果导致Xcode模拟器不显示SDK版本,反而显示设备ID了,感觉特别的忧伤......如图: 进到Xcode->window->Devi ...

  9. CRM导入组织报实例名称必须与计算机名称相同的问题

    今天采用P2V拷贝了一台CRM数据库到虚机上,因为要加域必须得把计算机名改了,然后再重新导入组织的时候报错了:"实例名称必须与计算机名称相同",google了下没有匹配的问题答案, ...

随机推荐

  1. page、request、session和application有什么区别?

    转自:http://liuyuru.iteye.com/blog/773367 1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的 ...

  2. php.ini中date.timezone设置详解

    date.timezone设置php5默认date.timezone为utc,改为date.timezone = PRC即可解决时间相差八小时的问题,但我在php的官方文档中看了半天也没找到这个参数啊 ...

  3. SQLServer 常见SQL函数

    SQL Server SQL函数 by:授客 QQ:1033553122 字符函数 日期函数 数学函数 系统函数

  4. Silverlight提示“Load 操作失败。远程服务器返回了错误: NotFound”

    调试时出现“Load 操作失败.远程服务器返回了错误: NotFound”: 一定要注意此错误之前的错误是什么?基本就是用户Cookie的问题,用户没有登录. 有时需要设置成Any CPU 有时重新编 ...

  5. AutoCompleteTextView 自定义提示样式

    项目中用到AutoCompleteTextView  自动提示功能,如果用自带的ArrayAdapter就一种样式,非常丑,而且每一项提示文字过多的话不会自动换行. 所以自己自定义了一个适配器. 效果 ...

  6. Unity Profiler CPU Usage(CPU使用情况)

    在Profiler界面点击左侧CPU Usage,Profiler界面下方Hierarchy窗口会列出各个函数对当前CPU的耗时,从大到小排序. 然后分析,各个函数的耗时是否异常,分析有没有可以优化的 ...

  7. 【转】python version 2.7 required,which was not found in the registry

    源地址:http://www.cnblogs.com/thinksasa/archive/2013/08/26/3283695.html 方法:新建一个register.py 文件,把一下代码贴进去, ...

  8. iOS手机流量抓包rvictl

    移动设备抓包主要方式 一.PC上设置网络共享,生成Wi-Fi热点供移动设备使用,PC上再使用tcpdump.Wireshark等捕获分析: 二.PC上开启http代理工具服务器(如Charles.fi ...

  9. LeetCode题解之Palindromic Substrings

    1.问题描述 2.问题分析 对于每一个字符,以该字符为中心计算回文个数. 3.代码 int countSubstrings(string s) { ; ) ; ; i < s.size(); i ...

  10. python的函数(一)

    摘要: python的函数(一)主要写函数的基础部分. 1,函数的好处 2,函数的定义与调用 1,函数的好处 函数应该有2个好处: 1,是降低代码的复杂度, 2,是减少代码量,避免重复的写相同的代码. ...