https://blog.csdn.net/long375577908/article/details/77744440

[DESCRIPTION]
MVNO(Mobile Virtaul Network Operator)虚拟网络运营商,没有自己的实体网络,通过租用MNO(Mobile Network Operator)的网络来提供网络服务。
我们知道Spec规定operator之间是通过MCC/MNC (Mobile Country Code/Mobile Network Code)来区分的;而MVNO和对应MNO的MCC/MNC是相同的,那就需要MVNO定义额外的栏位(通常都是SIM卡中某支文件)来和对应MNO做区分;具体这个额外的栏位是什么是每个MVNO自己定义的,需要向MVNO确认。
 
[SOLUTION]
 
目前MTK支持区分MVNO的方式有四种(KK以前没有EF_GID1方式),每种包含运营商名称Spn显示和APN两个方面的需求;Spn显示方面每种区分方式对应一个xml的配置表:
1. EF_SPN方式,对应MVNO配置到Virtual-spn-conf-by-efspn.xml中
2. EF_IMSI方式,对应MVNO配置到Virtual-spn-conf-by-imsi.xml中
3. EF_PNN方式,对应MVNO配置到Virtual-spn-conf-by-efpnn.xml中
4. EF_GID1方式,对应MVNO配置到Virtual-spn-conf-by-efgid1.xml中
 
需要向MVNO确认的信息如下:
1. 区分方式是以上哪种,从而决定相关信息需要配置到哪个xml中
2. MVNO的MCC/MNC是什么
3. MVNO的区分栏位的值是什么
4. MVNO需要显示成什么
5. MVNO是否有自己的APN需要配置(还是直接使用对应MNO的),如果需要,值是什么
 
KK以前(JB*.MP):
一 SPN的设定:
 
(1)通过EF_SPN区分
这中方式是读取SIM中的文件EF_SPN,结合SIM的mccmnc+spn,在virtual-spn-conf-by-efspn.xml 中查找有没有对应的记录,如果有这表示这个SIM是MVNO的卡,同时取name字段的内容当作运营商名称。
如果知道MVNO的SIM卡中的SPN是“abc”,MNO的MCC/MNC是10000,期望显示运营商名是”MVNO“,那就这样加记录(在Virtual-spn-conf-by-efspn.xml中)
<virtualSpnOverride mccmncspn="10000abc“ name="MVNO">
 
(2)通过EF_IMSI区分
这中方式是imsi中有一段特殊的数字标识用于和MNO区分
例如MNO的MCC/MNC是46692,MVNO的IMSI是466923302848289,IMSI的第9位(注意:是0 base, 所以index要填08)起连续2个数字为特殊标识(28),期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-imsi.xml中)
<virtualSpnOverride mccmnc="46692" index="08" length="02" pattern="28" name=“MVNO”>
 
(3)通过EF_PNN区分
EF_PNN是SIM中的一个option的文件,里面存放一组网络运营商名称(PLMN Network Name)。这种方式即是读取EF_PNN中的第一个pnn来匹配。如果MNO的MCC/MNC是10000,MVNO中EF_PNN的第一个pnn是“abc”,期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-efpnn.xml中)
<virtualSpnOverride mccmncpnn="10000abc“ name="MVNO">
 
 
二 APN的设定
其对应的文件是apns-conf.xml,和spn-conf.xml相同的目录。对比SPN,APN就简单许多,APN填写和SPN区分选择有联系。 这里举例说明,原MNO的APN的设定
 <apn carrier="Orange Entreprise"  
      mcc="100"
      mnc="00"
      apn="MNO的apn"  
      user="MNO的user"
      password="MNO的password"
      type="default,supl"
  />
 
(1)通过EF_SPN区分
区分是通过spn字段,和spn记录中的spn字段相同
假如spn中MVNO对应记录是<virtualSpnOverride mccmncspn="10000abc“ name="MVNO">;
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      spn="abc" <<增加这个字段
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
  />
 
(2)通过EF_IMSI区分
通过imsi的pattern区分,和spn中的pattern相同。
假如spn中的MVNO记录是<virtualSpnOverride mccmnc="46692" index="08" length="02" pattern="28" name=“MVNO”>
那这个对应的MVNO的AP是
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      imsi="28" <<增加这个字段
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
  />
 
(3)通过EF_PNN区分
区分是通过pnn字段,和spn记录中的pnn字段相同
假如spn中MVNO对应记录是<virtualSpnOverride mccmncpnn="10000abc“ name="MVNO">;
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      pnn="abc" <<增加这个字段
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
  />
 
KK以后(包含KK):
一 SPN的设定:
所有MVNO区分方式的virtual xml的构成都应该是mccmnc+pattern
 
(1)通过EF_SPN区分
这中方式是读取SIM中的文件EF_SPN,结合SIM的mccmnc+spn,在virtual-spn-conf-by-efspn.xml 中查找有没有对应的记录,如果有这表示这个SIM是MVNO的卡,同时取name字段的内容当作运营商名称。
如果知道MVNO的SIM卡中的SPN是“abc”,MNO的MCC/MNC是10000,期望显示运营商名是”MVNO“,那就这样加记录(在Virtual-spn-conf-by-efspn.xml中)
<virtualSpnOverride mccmncspn="10000abc“ name="MVNO">
 
(2)通过EF_IMSI区分
这中方式是imsi中有一段特殊的数字标识用于和MNO区分
例如MNO的MCC/MNC是46692,MVNO的IMSI是466923302848289,IMSI的第9位起连续2个数字为特殊标识(28),期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-imsi.xml中)
<virtualSpnOverride imsipattern="4669246692×××28×××××" name=“MVNO”>
 
(3)通过EF_PNN区分
EF_PNN是SIM中的一个option的文件,里面存放一组网络运营商名称(PLMN Network Name)。这种方式即是读取EF_PNN中的第一个pnn来匹配。如果MNO的MCC/MNC是10000,MVNO中EF_PNN的第一个pnn是“abc”,期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-efpnn.xml中)
<virtualSpnOverride mccmncpnn="10000abc“ name="MVNO">
 
(4)通过EF_GID1区分
EF_GID1是SIM中的一个option的文件,里面存放了n个byte的数据;如果MNO的MCC/MNC是10000,MVNO的EF_GID1的内容是"11",期望显示的运营商名称是"MVNO",那就这样加记录(Virtual-spn-conf-by-efgid1.xml中)
<virtualSpnOverride mccmncgid1="1000011" name="MVNO">
 
二 APN的设定
其对应的文件是apns-conf.xml,和spn-conf.xml相同的目录。对比SPN,APN就简单许多,APN填写和SPN区分选择有联系。 这里举例说明,原MNO的APN的设定
 <apn carrier="Orange Entreprise"  
      mcc="100"
      mnc="00"
      apn="MNO的apn"  
      user="MNO的user"
      password="MNO的password"
      type="default,supl"
  />
 
(1)通过EF_SPN区分
区分是通过spn字段,和spn记录中的spn字段相同
假如spn中MVNO对应记录是<virtualSpnOverride mccmncspn="10000abc“ name="MVNO">;
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
      mvno_type="spn"                  <<增加这两个字段
      mvno_match_data="abc"
  />
 
(2)通过EF_IMSI区分
通过imsi的pattern区分,和spn中的pattern相同。
假如spn中的MVNO记录是<virtualSpnOverride imsipattern="4669246692×××28×××××" name=“MVNO”>
那这个对应的MVNO的APN是
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
      mvno_type="imsi"                  <<增加这两个字段
      mvno_match_data="46692×××28×××××"
  />
 
(3)通过EF_PNN区分
区分是通过pnn字段,和spn记录中的pnn字段相同
假如spn中MVNO对应记录是<virtualSpnOverride mccmncpnn="10000abc“ name="MVNO">;
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
      mvno_type="pnn"                  <<增加这两个字段
      mvno_match_data="abc"
  />
 
(4)通过EF_GID1区分
区分是通过gid1字段,和spn记录中的gid1字段相同
假如spn中MVNO对应记录是<virtualSpnOverride mccmncgid1="1000011" name="MVNO">;
 <apn carrier="Orange Entreprise"  <<设定中显示的名称
      mcc="100"
      mnc="00"
      apn="MVNO的apn"  
      user="MVNO的user"
      password="MVNO的password"
      type="default,supl"
      mvno_type="gid"                  <<增加这两个字段, 注意是gid而不是gid1
      mvno_match_data="11"
  />
 
 
 
有些地区的MVNO要求忽略国内漫游(national roaming),如果有此需求可以参考:
ID: FAQ11783
[NW]MVNO忽略国内漫游(ignore national roaming)

如果按照上述配置后,锁屏界面/下拉列表界面 显示的名字和配置的不同,可能按照spec显示了更高优先级的名字,比如NITZ/EONS…

遇到这类问题属于网络运营商名称显示,可以同时参考如下FAQ:
ID: FAQ08919
[NW]网络运营商名称显示规则(锁屏界面,下拉列表)---网络名称 客制化方法 和 问题处理flow

[FAQ09811][NW]如何区分MNO和MVNO相关推荐

  1. 如何区分MNO和MVNO

    MVNO(Mobile Virtaul Network Operator)虚拟网络运营商,没有自己的实体网络,通过租用MNO(Mobile Network Operator)的网络来提供网络服务. 我 ...

  2. [FAQ11783][NW]MVNO忽略国内漫游(ignore national roaming)

    [DESCRIPTION] 有些地区的MVNO(Mobile Virtual Network Operator)和国内各MNO(Mobile Network Operator)签订了协议,使用国内所有 ...

  3. android 网络运营商名称显示规则(锁屏界面,下拉列表)

    一:Background & 相关flow MTK Operator name display在手机中分成两种类型: 1. Sim卡名称: 根据开机从SIM卡中读取的IMSI去到Spn-con ...

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

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

  5. andorid中APN与SPN相关的设置相关

    APN: 一,简介 APN全称是Access Point Name,是手机上网必须要配置的一个参数,用来决定手机是通过哪一种接入方式来访问网络. 接入方式:在国外,接入方式有很多,比如:gprs:hs ...

  6. Android APN的显示流程源代码分析

    一.名词介绍 1.PLMN(Public Land Mobile Network,公共陆地移动网络)由政府或它所批准的经营者,为公众提供陆地移动通信业务目的而建立和经营的网络.一句话:一个移动通信网络 ...

  7. mno/mvno__2020.07.16

    在进行apn配置时,会有mno/mvno项,如果时mno表示是实体运营商,如果是mvno则表示是虚拟运营商. mvno_type:iccid.imsi.gid.spn. MVNO(Mobile Vir ...

  8. 利用百度的词法分析区分数据

    1.目标 我以区分名人数据与非名人数据为例.何为名人数据.非名人数据 ? 名人数据:介绍某位名人的一段(一句)话,例如:Raj Babbar,演员,主要作品有<迷宫下的罪恶2>.<天 ...

  9. 区分PC端与移动端代码,涵盖C#、JS、JQuery、webconfig

    1)C#区分PC端或移动端 using System.Text.RegularExpressionsstring u = Request.ServerVariables["HTTP_USER ...

最新文章

  1. 怎么UI数组惊醒初始化 c语言,C语言教案7-数组.ppt
  2. JavaScript类型·对象·函数
  3. bootstrap 栅栏系统
  4. linux2.6内核compat_ioctl函数
  5. our reuse project in HCP
  6. FFT算法的完整DSP实现(转)
  7. 最大尺寸分辨率_未来就在眼前——视涯科技推出最高分辨率硅基OLED显示屏幕...
  8. graphql_GraphQL在Wildfly群上
  9. 6000个边缘Kubernetes节点驱动城市80万次智能停车,如何成为可能?
  10. 技术面试别扯智力题!
  11. Transformer-XL 2
  12. python敏感词过滤代码简单_DFA敏感词过滤算法的python实现
  13. assimp android build,Android assimp编译及引用
  14. VLAN隔离技术 — MUX VLAN
  15. 生成一个16位的随机数字
  16. 300多条MTK工作笔记为你的工作节省一半时间
  17. windows7 下安装 kali Linux 双系统
  18. Unicode双向算法详解(bidi算法)(一)
  19. 硬盘开盘数据恢复-不能不学的硬盘基本知识
  20. 某微信小程序连锁超市响应参数解密

热门文章

  1. RHEL 升级内核和回退步骤
  2. C++我的世界源代码
  3. 无学历与低学历的看过来!!
  4. 学习上溯造型和下溯造型 【转载一篇】
  5. ftp服务器中的文档不能直接打开为啥,如何直接打开ftp里的 word 文档 win7 ftp直接打开word...
  6. c语言正切值怎么表示,C语言中正切的相关函数总结
  7. 国外问卷调查一个月能有多大的收益呢?20w+吗?
  8. 把PotPlayer设为默认视频播放器
  9. 能ping通,但是telnet端口连接失败
  10. FCoin商业模式不可持续?开始转向“币改”?