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. hibernate反向生成映射文件报错

    报错原因:可能是你的数据库里的某个表没设置主键.

  2. Java基础之线程——使用执行器(UsingExecutors)

    控制台程序. 在这个版本的银行示例中,把借款和贷款事务创建为在不同线程中执行的任务,它们把事务提交给职员.创建事务的任务是Callable<>任务,因为它们需要返回已为每个账户创建的借款或 ...

  3. CommonJS规范

    CommonJS是一种规范,NodeJS是这种规范的实现.CommonJS是一 个不断发展的规范,计划将要包括如下部分: Modules Binary strings and buffers Char ...

  4. Swift实战-豆瓣电台(四)歌曲列表的展现

    观看地址 http://v.youku.com/v_show/id_XNzMwNDE0OTA4.html 这节的主要内容是如何利用cell展现获取到的数据. 首先申明两个数组来储存我们获取到的数据 v ...

  5. G面经prepare: Reorder String to make duplicates not consecutive

    字符串重新排列,让里面不能有相同字母在一起.比如aaabbb非法的,要让它变成ababab.给一种即可 Greedy: 跟FB面经Prepare task Schedule II很像,记录每个char ...

  6. javabean实体类对象转为Map类型对象的方法(转发)

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...

  7. MFC架构

    MFC的六大关键技术: 1)MFC程序的初始化过程 2)消息映射 3)运行时类型识别(RTTI) 4)动态创建 5)永久保存 6)消息传递 一.MFC的初始化过程: MFC的架构组成: 1.要有CWi ...

  8. .NET: WPF Binding对数据的校验和转换以及多路Binding

    一.校验 一般需要对target上的值进行校验. xaml: <Window x:Class="WpfApplication1.MainWindow" xmlns=" ...

  9. Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)

    1,关于Rect和RectF类的区别以前一直没有去关注它,刚刚了解了一下才知道都是用来确定矩形的区域,不过Rect是int类型的坐标而RectF是float类型的坐标,所以说RectF要更加精确.现在 ...

  10. TF255466: Team Foundation Server 的配置过程无法继续。以前的更新或安装需要重

    在验证是否可以安装 SharePoint 时的提示,Error [ System Checks ] TF255466: The configuration process for Team Found ...