关于sim/usim的一些概念
来源:互联网 发布:数据库怎么弄 编辑:程序博客网 时间:2024/05/29 04:47
1 SIM卡存储数据类型:
(1)固化数据:SIM卡卡号、国际移动用户识别码(IMSI)、用户加密密钥(Ki)、加密算法(A3、A8)、个人解锁PUK码等。
(2)静态数据:用户接人等级、短消息中心(SMSC)号码、各类业务接人号等。
(3)动态数据:临时移动用户识别(TMSI)码、区域识别(LAI)码、密匙(Kc)、RAND、MS所处基站小区、PIN码和PUN码出错计数、 PIN码开关使能等。
(4)个人数据:本机电话号码、用户电话簿、短信、费率信息、缩位拨号、转移电话号码等
2 UICC、SIM、USIM
UICC Universal Integrated Circuit Card 通用集成电路卡 UICC中可以包括多种逻辑模块
USIM 通用用户标识模块(Universal Subscriber Identity Module,USIM)
SIM 用户标识模块(Subscriber Identity Module,SIM)
USIM可以同时包括USIM和SIM两个逻辑模块,也可以只包括USIM逻辑模块,前者是复合USIM卡,也就是说可以兼容2G与3G终端,后者是纯粹的USIM卡,只能在3G终端中使用,而UICC是定义智能卡物理特性的总称,可以包含多种业务应用,比如USIM、SIM、IP多媒体业务标识模块等。
在这里插入一段代码,开发过程有时候我们会想判断当前是sim卡还是usim卡,源码是这样做的
private int updateEfForIccType(int efid) { // Check if we are trying to read ADN records if (efid == IccConstants.EF_ADN) { if (phone.getIccCard().isApplicationOnIcc(IccCardApplication.AppType.APPTYPE_USIM)) { return IccConstants.EF_PBR; } } return efid; } public boolean isApplicationOnIcc(IccCardApplication.AppType type) { if (mIccCardStatus == null) return false; for (int i = 0 ; i < mIccCardStatus.getNumApplications(); i++) { IccCardApplication app = mIccCardStatus.getApplication(i);//遍历判断应用的类型是否为APPTYPE_USIM if (app != null && app.app_type == type) { return true; } } return false; }
虽然这个方法是不对phone以外代码开放,不过还是可以参考下思路的,还有一种直接从卡上读取属性也可以,只是好像没有标准的AT命令需要芯片厂商自行添加
3 MF DF EF ADF
MF(Master File),也称作主控文件。其他所有的DF和EF都位于MF之下。
DF(Delicated File)一个有许多文件的功能分组,DF只具有头信息,相当于文件地址指针。
EF (Elementary File)基本文件,这个就是真正的文件了,数据内容保存在这里。
与SIM卡文件类型相比,除了有MF,DF,EF文件外,还增加了ADF文件类型即是USIM (Application DF,ADF)
其中EF又分为Linear fixed EF(保存短信,电话号码,邮箱等),Transparent EF(IMSI 一些基本数据),Cyclic EF,所以在代码中看到读取EF文件方法有时候是不一样的。
4 几个和卡相关的类
IccConstants.java 记录位置常量,写几个使用频率高的,比如
static final int EF_ADN = 0x6F3A;
static final int EF_FDN = 0x6F3B;
static final int EF_SDN = 0x6F49;
static final int EF_EXT1 = 0x6F4A;
static final int EF_SMS = 0x6F3C;
IccCardStatus.java 记录SIM卡的状态,如ABSENT, READY,UNKNOW,ETC。其它应用判断卡状态也就是这几个值
IccRecords.java 把它理解成描述卡上文件内容的一个类应该比较合适,
IccProvider.java 这个不需要多解释,对应用而言知道怎么使用它操作数据就可以,通过它拿到的数据已经解析好的了。
上面的内容有些在网上可以找到,有些是android源码中的,这里整理下列出个人觉得对学习sim卡相关知识有些帮助的东东,如果有遗漏的欢迎留言告诉我。
- 关于sim/usim的一些概念
- USIM卡与SIM的区别
- UICC,USIM卡与SIM的区别
- UICC,USIM卡与SIM的区别
- UICC,USIM卡与SIM的区别
- UICC,USIM卡与SIM的区别
- UICC,USIM卡与SIM的区别
- USIM卡与SIM的区别
- UICC,USIM卡与SIM的区别
- SIM卡与USIM
- SIM USIM UIM RUIM
- sim, uim, usim
- sim, uim, usim
- sim卡 USIM卡 的管脚定义 pinout 及usim 座封装
- UICC、SIM、USIM、UIM基础
- 关于USIM卡的全面测试综述
- 关于3G手机USIM卡的电话簿
- 关于3G手机USIM卡的电话簿
- com.android.musicFx设置音效流程 -- 从app到AudioFlinger
- Ubuntu 10.04 配置gdm 实现window的Xmanager远程登录
- android 联系人 --- 读取usim卡的邮箱
- pythonchallenge_1
- codeforces 126B Password DP KMP
- 关于sim/usim的一些概念
- JSTL API
- 微信版中文计算器
- Asynctask 代码分析
- Python ElementTree的find,findall函数参数
- 初探类的字段.属性.方法.事件
- JSTL与EL
- 8086的地址ffff:ffff和0:ffef回绕问题
- EDBC(Emacs-Lisp Database Connectivity)