SIM卡应用

移动运营商已经将SIM卡用於很多不同的应用,下面列出了其中最主要的应

用∶

·漫游应用∶确保手机可以在漫游之後选择缺省的运营商网络。一个SIM应用是可以在手机漫游到某个合作夥伴运营商网络时,在手机屏幕上显示运营商名称。

注:在手机上显示的运营商名称有以下三种:

OPN 是指此SIM卡的提供商名称;

PLMN 当前注册的网络提供商名称;

SPN 服务提供商名称;

OPNSPN都是提前预置在SIM卡中的;网络提供商和服务提供商可能不是同一个企业,所以有时需要单独显示SPN

·自动检测设备型号或者IMEI,用於内容配置和设备改动检测。

·微型浏览器∶一种基於SIM的、可以显示WAP内容,适用於多种服务例如游戏、信息娱乐、票务和移动银行。内容页面可以保存在SIM卡中,并通过无线方式刷新。

例如,SmartTrust 的无线互联网浏览器(WIB)就是一种已经被大部分SIM卡制造商所采用的微型浏览器标准。SimAlliance's ToolkitS@T)是另外一种微型浏览器标准。

·按照OMA DM 1.2标准的规定,利用SIM加载设备管理操作(例如选择所要使用的服务器)。

·内容供应应∶Celltick LiveScreen是一种可以在用户的手机处於闲置模式时,通过广播信道向其显示交互式优惠广告内容的应用。用户只需点击一次,就可以响应所显示的内容(文字和图片),访问一个可以提供更多信息的WAP页面,下载铃声,或者致电呼叫中心以获取关於所显示消息的更多信息。

===================================================

综述:

手机上对运营商名字的显示完全可以做为一个运营商的品牌宣传手段。特别是现在虚拟运营商越发增多,很多虚拟运营商并不希望出现合作伙伴,同时也是竞争对手的名字。在这种情况下,手机是如何决定显示哪些内容,就需要有一个详细的说明。本文综合各个规范,进行一定的探索。

总览:

根据TS 22.101,手机在显示运营商信息时,一共有三个选择,优先级从高到低排列。

1. (U)SIM卡中存放的PLMN和PNN内容。具体显示哪个内容根据SPN文件设置以及当前登陆网络决定。
2. 网络下发MM中的数据
3. ME制造时预置的PLMN以及对应的显示名称

事实上,我还见过第四种显示方式,就是直接显示MCC+MNC。例如中国移动前几年刚启用460 02的时候,很多手机不能识别,就直接把这个组合显示出来。

注:手机在注册的时候,网络下发给手机的MM信息(Miscellaneous Messages):

  • Full name for network
  • Short name for network
  • Local time zone
  • Universal time and local time zone
  • LSA Identity
  • Network Daylight Saving Time

(U)SIM相关文件的作用如下

1. EF_6F46_SPN

b1=0: 当注册PLMN为HPLMN或者EF_SPDI所存PLMN时,不显示PNN
b1=1: 当注册PLMN为HPLMN或者EF_SPDI所存PLMN时,显示PNN
b2=0: 当注册PLMN既不是HPLMN也不是EF_SPDI所存PLMN时,显示SPN
b2=1: 当注册PLMN既不是HPLMN也不是EF_SPDI所存PLMN时,显示SPN
其他:RFU

前提:根据ETSI规范,

在HPLMN时,默认需要显示SPN;
在VPLMN时,默认需要显示PNN

2. EF_6FCD_SPDI

此文件中存放的PLMN手机进行显示时,等效视为HPLMN

3. 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的第一个字节设置为00
2. 将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.0
ETSI TS 122.101 V9.11.0

ETSI TS 131.102 V10.3.0

SIM卡应用-OPN,PLMN,SPN的更多相关文章

  1. android 读取用户号码,手机串号,SIM卡序列号

    简介: IMSI:international mobiles subscriber identity国际移动用户号码标识,这个一般大家是不知道,GSM必须写在卡内相关文件中:MSISDN:mobile ...

  2. MTK Android 读取SIM卡参数,获取sim卡运营商信息

    android 获取sim卡运营商信息(转)   TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TE ...

  3. Android 读取SIM卡参数

    package com.water.activity; import java.util.List; import android.app.Activity; import android.os.Bu ...

  4. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  5. Android 手机卫士--绑定sim卡序列号

    现在开始具体 处理每一个导航页面的逻辑,首先看第二个导航页 本文地址:http://www.cnblogs.com/wuyudong/p/5949775.html,转载请注明出处. 这里需要实现绑定s ...

  6. Android 判断SIM卡属于哪个移动运营商

    第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemServic ...

  7. 获取sim卡序列号

    //获取sim卡序列号TelephoneManager TelephonyManager manager = (TelephonyManager)getSystemService(Context.TE ...

  8. Android本机号码及Sim卡状态的获取

    SIM卡存储的数据可分为四类:第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等.第二类是暂时存放的有关 ...

  9. TelephonyManager类:Android手机及Sim卡状态的获取

    TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息. 直接上注释后的代码,请享用 package net.sunniwell.app;import android.ap ...

随机推荐

  1. MySQL复制-设置延迟复制

    mysql> stop slave ; Query OK, 0 rows affected (0.00 sec) mysql> change master to master_delay= ...

  2. mongodb的连接和开启安全验证

    首先是启动mongodb a.打开cmd,cd进入mongodb的安装目录下的bin目录下面,执行 mongod --dbpath D:\MongoDBdata(数据存放的目录) 或者将mongodb ...

  3. GTA项目 二, JSON接口开放跨域访问

    public class CORSAttribute : ActionFilterAttribute { public string Domains { get; set; } public CORS ...

  4. Java的数据转换

    Java的数据类型分为三大类,即布尔型.字符型和数值型,其中数值型又分为整型和浮点型.相对于数据类型,Java的变量类型为布尔型boolean;字符型char:整型byte.short.int.lon ...

  5. ImportError: No module named setuptools

    Python第三方模块中一般会自带setup.py文件,在Windows环境下,我们只需要使用命令 cd c:\Temp\foo python setup.py install 两个命令就可以完成第三 ...

  6. centos 6.4下安装postgresql 9.2

    我的linux版本是centos 6.4 ,准备安装postgresql 9.2 根据官方说明: http://www.postgresql.org/download/linux/redhat/ 缺省 ...

  7. 求树的重心(POJ1655)

    题意:给出一颗n(n<=2000)个结点的树,删除其中的一个结点,会形成一棵树,或者多棵树,定义删除任意一个结点的平衡度为最大的那棵树的结点个数,问删除哪个结点后,可以让平衡度最小,即求树的重心 ...

  8. [转]Java中的多线程你只要看这一篇就够了

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  9. [原创]java WEB学习笔记51:国际化 概述,API 之 locale类,dataFormat类,numberFormat类, MessageFormat类,ResourceBundle 类

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  10. Array.prototype.each

    Array.prototype.each = function(closure){ //递归合并 return this.length ? [closure(this.slice(0,1))].con ...