Android学习笔记_SIM卡介绍
SIM卡概述
1.1概述由于GSM通信系统是由欧洲的主要电信运营者和制造厂家组成的标准化委员会设计出来的,因此它更贴近用户和运营者的利益,在安全性、方便性等方面下了较大的功夫。
无线传输比固定传输更易被窃听,如果不提供特别的保护措施,很容易被窃听或被假冒一个注册用户。
八十年代的模拟系统深受其害,令到用户利益受损,因此GSM首先引入了SIM 卡技术,从而使GSM在安全方面得到了极大改进。
它通过鉴权来防止未授权的接入,这样保护了网络运营者和用户不被假冒的利益;通过对传输加密可以防止在无线信道上被窃听,从而保护了用户的隐私;另外,它以一个临时代号替代用户标识,使第三方无法在无线信道上跟踪GSM用户,而且这些保密机制全由运营者进行控制,用户不必加入更显安全。
由于在GSM通信中引入了SIM卡的技术,使无线电通信从不保密的禁区解放出来,只要客户手持一卡,可以实现走遍世界的愿望。
SIM卡有许多特点:特点之一,客户与设备分离(人机分开)。
在GSM通信中,SIM卡与移动设备之间已设置一个开放式的公共接口,这样,使用者与自己的设备之间没有互相依存的关系。
因在SIM卡中存储有持卡者的客户数据、保安数据、鉴权加密算法等,只要客户手持此卡就可以借用、租用不同厂家的移动台,得到卡内存储的各种业务的服务,大大方便了客户,大大增强了GSM通信的移动性,也大大地增强了各生产厂家的设备的共享性。
特点之二,通信安全可靠。
因为在SIM卡中有一个永久性的存储器,既有存储能力,又有进行计算的能力,所以它属于智能卡。
当客户建立呼叫时,首先要客户输入个人身份号码(PIN),此码由4~8位数字组成,由移动台的键盘键入。
若输入三次不正确的PIN码后,PIN 码被锁,通信终止,这是防范那些伪客户盗用通信的方法之一。
若有权客户忘记了码或一时疏忽,输入三次错误,可利用SIM卡中存储的0~9位数字的个人解锁钥(PUK)来解锁PIN 码,使之恢复正常。
但也要特别注意,若输入十次错误的PUK,整个SIM卡就报废了,只有重新购置一个SIM卡才能再进行通信。
SIM卡学习
SIM卡的逻辑接口(2)
文件识别符(ID) :用于寻址或识别各种专用文件。它由两个宇节组成,以十六进制 进行编码。为使每个文件能被唯一地识别,文件ID应具备下述条件: 文件ID应该在相关文件建立时分配; 在同一父文件之下的两个子文件应具有不同的ID; 子文件和任何父文件,或直接或间接,不能有相同的文件ID。 对GSM通信,第一个宇节表示被识别文件的类型: “3F”主要文件。 “7F”1级专用文件。 “5F” 2级专用文件。 “2F”在主要文件之下的基本文件。 “6F”在1级专用文件之下的基本文件。 “4F”在2级专用文件之下的基本文件。
SIM卡-ME接口
SIM卡在GSM系统中用来与移动终端进行连接和信息交换,提供移动通信业务所需的相关数据, 并在其内部存储用户信息,执行鉴权算法和产生加密钥匙等。它与基带单元的接口电路如图 所示。其中,SIM_CD为SIM卡检测脚,用于检测SIM卡的拔插。SIM_CLK为ME提供的读/写SIM 卡的参考时钟。SIM_RST为SIM卡复位信号。SIM_IO为串行数据输入/输出线,由20 kΩ 的上 拉电阻上拉至高电平。SIM_RnW为读/写控制信号,用以指示当前SIM_IO线上数据传输的方 向。SIM_PWCTRL为功率控制信号,可在空闲方式时控制SIM卡上的电源关闭,从而降低功耗, 延长待机时间。
基本文件(EF)
循环型:按时间顺序存储记录,如果所有的记录都被占用了,下次存储时将覆盖 最早存储的那条。由固定长度、固定数量的的记录组成,将最后一条记录和第一 条连接。当指针指向最后一条记录,其下一条记录为第一条记录,当指针指向第 一条记录时,其前一条记录为最后那条,最近更新的那条记录为第一条记录,最 早更新过的放在最后一条。 选择一个循环型文件后,指针指向最近更新或添加的那条记录,若操作失败,指 针位置不变。 目前,这种类型的文件包含的记录数不超过255个,每条记录的长度不超过255个 字节
SIM卡基础知识
SIM卡基础知识SIM卡基础知识1. 什么是SIM卡?SIM卡是客户识别模块(Subscriber Identity Module)的缩写,也称为用户身份识别卡,GSM(Global System for Mobile Communication全球移动通信系统)手机必须装上SIM卡才能使用。
SIM卡中有处理器和内存,可以存储用户的信息,也可供GSM网络对用户身份进行鉴别。
一张SIM卡唯一识别一个用户,可插入任何一部GSM手机中使用,所产生的通信费用则自动记录在该SIM卡所唯一标志用户的帐户上。
2. SIM卡的外观特点嵌入式SIM卡(俗称小卡),其大小只有25mm×15mm,是可以装入到移动电话机中的卡。
用户刚入网时得到的SIM卡是一张大卡,小卡是嵌在大卡上的。
目前手机普遍使用小卡,用户可以把小卡从大卡上取下,按卡上标出的箭头方向插入移动电话机使用。
中国移动的SIM卡版面是由各地自行设计发行的,SIM卡正面图案一般统一印有地球、“中国移动”字样及其徽记,反面则是各地主管部门的名称和当地风景名胜、名人、生肖、广告等。
SIM卡背面的小卡上有20位数SIM卡序列号(ICCID /Integrated Circuit Card Identification )。
前面6位(898600)是中国移动的代号;第7位是业务接入号,在135、136、137、138、139中分别为5、6、7、8、9;第8位是SIM卡的功能位,一般为0,现在的预付费SIM卡为1;第9、10位是各省的编码,第11、12位是年号,第13位是供应商代码,第14~19位则是用户识别码,第20位是校验位。
3. SIM卡内部结构SIM卡内部是由CPU(微处理器)、ROM(程序存储器)、RAM(工作存储器)、EEPROM(数据存储器)和I/O(输入输出)等器件组成的完整单片机。
SIM卡的物理特性、结构、尺寸及通讯协议都符合国际标准化组织专门为接触型IC卡制定的ISO/IEC7810,ISO7816国际标准,以及GSM11.11和GSM11.14等GSM标准。
SIM卡
主要内容
主要内容
主要功能
功能简介
功能配置
SIM卡的主要完成两种功能:存储数据(控制存取各种数据)和在安全条件下(个人身份号码PIN、鉴权钥Ki正 确)完成客户身份鉴权和客户信息加密算法的全过程 。
SIM卡是应用GSM移动通信终端的钥匙,一旦SIM卡从移动终端中拔出,除了紧急呼叫外,终端均无法使用。 SIM卡除了能作为钥匙外,还提供用户很多方便,用户只需将SIM卡插入或嵌入任何一台GSM终端,即能实现通 信。
SIM卡还看管许多提供给用户业务的信息,可用来存储短信息,特是那些当用户不开机或不在时接收的信息。 更专门的应用是存储一个优先表,当几个络都可接入时供用户选择。当实时的收费通知在上出现时,SIM卡可以 记住这条信息,使用户可以随时知道自己的花费 。
发展
e
5G超级
eSIM就是将传统SIM卡转变为“电子版本”直接嵌入到设备芯片上,用户无须再插入物理SIM卡,但功能上与 SIM卡无异。
eSIM卡
超级SIM卡5G超级SIM卡是SIM卡的一次变革,能实现GB级存储容量以及高读写速率,这与之前相比是指数级 的提升。
5G超级SIM卡可以通过实体卡配合App,实现不同手机之间核心数据一键备份、一键恢复,一卡轻松换手 机。
SIM卡
GSM系统的移动用户所持有的IC卡
Байду номын сангаас
01 简介
03 主要内容
目录
02 结构种类 04 主要功能
SIM卡的基本知识
1.SIM卡的存储容量SIM卡的容量有16KB、32KB以及64KB等几种,存储容量越大可供储存信息也就越多,其中常见的16KB卡一般可以存放200组电话号码及其对应的姓名文字,40组短信息、5组以上最近拨出的号码、SIM卡密码(PIN)。
希望更方便地获得运营商提供的一些增值服务的用户则可以考虑换STK卡,STK其实就是增强版的SIM卡,SIM卡有的功能它全有,而且增加了如手机银行、手机炒股、短信点播等功能。
2.SIM卡ICCID的含义SIM卡背面有20位数字组成的IC唯一标识号ICCID。
以中*国移动为例:前面6位(898600)是中*国的代号;第7位是业务接入号,在135、136、137、138、139中分别为5、6、7、8、9;第8位是SIM卡的功能位,一般为0,现在的预付费SIM卡为1;第9、10位是各省的编码;第11、12位是年号;第13位是供应商代码;第14~19位则是用户识别码;第20位是校验位。
3.SIM卡密码一般用户能用到的SIM卡密码包括pin1码和pin2码,其中PIN1码是SIM卡的个人密码,可防止他人擅用SIM卡,但对PIN1的使用务必要慎重。
如果开启了PIN密码保护功能,在开机时屏幕上会显示出要求用户输入4-8位PIN1码(初始PIN1码均为1234),如果连续三次输入错误的密码,手机将会显示‚Enter PUK code‛或‚Blocked‛字样,说明SIM卡已被锁上,因为如果连续三次输错PIN1就会提示你输入PUK 码(后附费用户的PUK码由电信运营商保管,预付费用户的PUK码一般会印在随卡的密码纸上交给用户),如果PUK码连续输错10次,SIM卡将烧掉,那样就只能换张SIM卡了。
所以若非必要,切勿贸然使用密码锁卡。
万一不慎输错了pin1码导致提示输入puk码,也不要怀侥幸心理去试图解码,应该立刻送交所属的电信运营商解码。
pin2是用来进入SIM卡下附属功能(如通话计费功能),一般由电信运营商掌握,对一般用户用处不大S60机器的软件一般安装与删除方法[1].为了顺利安装所有S60第三版机型适用的软件:在‚工具‛--‚程序管理‛中====‚选项‛===‚设置‛中的‚软件安装‛可以选择 "仅限已注册的程序/全部",,建议选择 "全部".在线证书检查:可以选择 "必须通过检查/开/关",,建议选择 "关". 注意:手机时间及日期也需要按照当时的时间日期正确设置好,否则有可能提示证书错误E为存储卡.C为手机机身存储.[2].软件安装两种方法:方法一:手机用数据线连接电脑后用PC套件安装sis/jar程序:(注意:JAR文件不用解压可直接安装,请把JAR文件名改为英文进行安装)1.电脑安装PC套件,用数据线连接手机和电脑,在我的电脑内进入诺基亚手机浏览器2.进入后我们可以看到C盘,E盘,以及手机的联系人和信息四大栏目3.现在我们开始安装软件,在电脑上找到需要安装的sis/jar软件[任意位置]4.双击这个文件后会出现提示‘是否要将应用程序安装到手机上?5.选择是后,出现‘请在手机用户界面上完成此安装过程’6.这个时候我们查看我们手机上的提示来进行安装工作手机界面会提示:安全警告无法确认提供者,仍然继续?选择是为继续安装,反之则为退出本次安装,我们选择是7.这是手机界面出现是否安装该软件的提示同样我们也是选择是:8.这个时候会出现选项,可以选择安装/查看证书/查看详情我们选择安装,后面这两项无关紧要,可以忽略9.选择安装后手机会提示你选择软件安装位置,为了节约手机C盘存储空间我们将软件安装在E盘,也就是存储卡:选择好安装位置后就手机就开始自动安装了软件了。
SIM卡方面知识介绍
提 纲
SIM卡基本知识简介
SIM卡新技术应用 SIM卡使用中的常见问题 SIM卡分类
SIM卡分类
64K全球通专属卡
– – – – 配置 AND:250,SMS:50 VIP专用菜单 短信签名档
64K动感地带卡
– – – – 配置 AND:250,SMS:50 VIP专用菜单(隐含) 短信签名档(隐含)
1970年法国工程师发明了IC卡 80年代IC卡才发展起来, 成为具备更多智能功能的智能卡。
GSM中使用接触式 CPU卡--SIM卡,可识 别身份、存储数据。
在电信领域中,IC卡已从公用预付费电话卡扩展到移动通信手机中。
目前,以GSM为代表的第二代移动通信技术已经成熟。
SIM卡发展概述2/3
SIM卡的容量及功能演进
SIM卡ICCID编码
▪ YY
为编制ICCID时的年号,取后两位。
▪ G SIM卡供应商代码,分配如下: 0——雅斯拓 1——GEMPLUS 2——武汉天喻 3——江西捷德 4——珠海东信和平 5——大唐微电子 6——航天九州通 7——北京握奇 8——东方英卡 9——北京华虹 A——上海柯斯 B——航天智通
PIN/PUK
▪ SIM卡的密码
SIM卡的密码是为了保护运营商和用户的合法权益而
设,按GSM标准中以卡内文件访问条件的形式来实现其保
护作用。 PIN
3次
锁了!~
PUK
10次
提 纲
SIM卡基本知识简介
SIM卡新技术应用 SIM卡使用中的常见问题 SIM卡分类
SIM卡新技术应用1/3
SIM卡方面知识介绍
提 纲
SIM卡基本知识简介 SIM卡新技术应用
sim卡功能
sim卡功能SIM卡(Subscriber Identity Module)是一种小型芯片,用于在移动通信设备中存储用户信息。
SIM卡起源于1991年,被广泛应用于GSM(Global System for Mobile Communication)和UMTS(Universal Mobile Telecommunications System)等移动通信技术。
SIM卡的功能十分丰富,下面将详细介绍SIM卡的主要功能。
首先,SIM卡的主要功能是存储用户的个人和身份信息。
每张SIM卡都有一个唯一的识别码,称为国际移动用户识别码(IMSI)。
IMSI用于识别移动通信网络中的特定用户,并与用户的个人信息和电话号码等相关联。
此外,SIM卡还存储用户的个人设置和联系人信息,例如电话簿、短信和彩信记录,以及收藏的音乐和图片等。
SIM卡的另一个重要功能是身份验证。
当用户将SIM卡插入移动设备时,移动网络会使用IMSI验证用户的身份。
此过程称为“鉴权”,确保只有经过验证的用户才能访问移动网络并进行通话、发送短信等操作。
这种身份验证机制保证了用户信息的安全性和网络的稳定性。
除了存储用户信息和身份验证,SIM卡还具备移动支付的功能。
通过SIM卡上的安全芯片和应用程序,用户可以在移动设备上进行方便、安全的电子支付。
这些支付方式包括NFC(近场通信)、支付宝、Apple Pay等,并且还可以与银行账户进行关联,方便用户在不同商家进行交易。
SIM卡还支持网络漫游。
当用户离开其本地运营商的覆盖范围时,SIM卡可以自动切换到其他运营商的网络上,以便用户继续享受通话、短信和互联网服务。
这种网络漫游功能在国际旅行和长途出差中非常实用,用户只需插入当地的SIM卡,即可享受本地的移动服务。
此外,SIM卡还可以提供增值服务,例如语音信箱、无线上网等。
用户可以设置语音信箱来接收未接来电的信息,并通过SIM卡上的短信服务进行检索。
同时,SIM卡还能提供互联网接入功能,用户可以通过移动设备上的浏览器进行上网冲浪、电子邮件、社交媒体等操作。
sim芯片卡
sim芯片卡SIM芯片卡是一种用于存储用户信息和实现手机通信功能的集成电路卡片。
它具有保密性强、体积小、存储容量大、灵活可编程等特点,广泛应用于移动通信领域。
下面将详细介绍SIM芯片卡的工作原理、特点以及应用。
一、工作原理SIM芯片卡的工作原理可以简单概括为:存储用户信息,并通过与手机通信模块进行通信实现手机通信功能。
1. 存储用户信息:SIM芯片卡内部有一个存储区域,用于存储用户的手机号码、短信、通话记录、联系人等信息。
这些信息通常以二进制形式存储,并通过一定的加密算法进行保护,以确保信息的安全性和完整性。
2. 通信功能实现:SIM芯片卡内部集成了一个通信控制器,负责与手机的通信模块进行通信。
当用户需要进行通话、发送短信等操作时,手机将相应的命令发送给SIM芯片卡,通过通信控制器与手机通信模块进行通信,从而实现手机通信功能。
同时,SIM芯片卡还可以通过各种接口与其它设备进行通信,如与POS机进行交易、与电子签名设备进行身份认证等。
二、特点SIM芯片卡具有以下几个特点:1. 保密性强:SIM芯片卡内部存储的用户信息是加密存储的,只有经过相应的解密操作才能读取和使用。
同时,SIM芯片卡还具有PIN码、PUK码等安全功能,可对卡片进行物理和逻辑层面的保护。
2. 体积小:SIM芯片卡的尺寸通常为25mm x 15mm x 0.76mm,非常小巧,可以方便地插入手机、平板电脑等设备中。
这也为其在移动设备中的应用提供了可能。
3. 存储容量大:SIM芯片卡内部的存储容量一般在64KB到512KB之间,足以存储大量的用户信息和通信记录。
同时,由于卡片内部采用非易失性存储器,用户信息不会因为断电或移除而丢失,具有较高的可靠性。
4. 灵活可编程:SIM芯片卡具有一定的编程功能,可以根据实际需求进行编程,重新配置其功能和参数。
这使得SIM芯片卡可以在不同的通信标准和网络环境下使用,并支持各种手机通信功能的实现。
三、应用SIM芯片卡在移动通信领域有着广泛的应用,主要包括以下几个方面:1. 电话通信:SIM芯片卡是实现手机通讯的核心设备,用户通过SIM卡将手机与移动通信网络连接起来,实现电话通信功能。
SIM卡的基本知识
SIM卡的基本知识目录1. 什么是SIM卡? (2)1.1 SIM卡的定义 (3)1.2 SIM卡的起源和发展历程 (4)1.3 SIM卡的功能 (5)1.4 SIM卡的结构组成 (6)2. SIM卡的类型和标准 (7)2.1 常用的SIM卡类型 (8)2.2 SIM卡规格 (10)2.3 网络制式与SIM卡类型对应关系 (11)3. SIM卡的存储信息 (13)4. SIM卡的应用场景 (14)4.1 移动通信 (16)4.2 物联网 (IoT) (17)4.2.1 工业应用 (18)4.2.2 智能家居应用 (19)4.3 其他应用场景 (21)5. SIM卡的安全性和隐私保护 (22)5.1 SIM卡的安全机制 (24)5.2 SIM卡隐私保护 (25)6. SIM卡的破解和安全风险 (26)6.1 SIM卡破解方法和危害 (28)6.2 SIM卡安全风险防范 (29)7. SIM卡的发展趋势 (30)7.1 eSIM的应用前景 (32)7.2 未来SIM卡可能的演变方向 (33)1. 什么是SIM卡?SIM卡(Subscriber Identity Module)即客户识别模块,是一种数字证书,持卡人将其插入移动电话中,以便进行身份认证和通信连接。
SIM卡是GSM、3G和4G等多种移动通信运营商使用的核心技术之一。
SIM卡被集成在一个标准化的卡内部,主要由内置微电子芯片和天线组成。
这个微芯片包含了持卡人的所有海量信息,包括但不限于国际移动用户识别码(IMSI)、国际移动设备识别码(IMEI)、呼叫者和被呼叫者的电话号码、存储的短信、容器电子串号等。
SIM卡可能包含额外的功能如增加的费用控制、呼叫控制、通信记录保护等。
SIM卡是一种可擦写存储介质,这意味着只需通过编程工具对其编程,就可以执行诸如数据存储、传输和加密等操作。
这些数据存储在卡上的非易失性随机存取内存(NVRAM)中,即便用户切换到不同的手机或者更换运营商,SIM卡中的数据依然保持不变。
手机SIM卡的认识及其密码
The End
作者:爱疯手机维修 网址:
爱疯智能手机维修培训友情提醒 千万不要将卡弯曲,卡上的金属芯片更应小心 保护;保持金属芯片清洁,避免沾染尘埃及化 学物品;为保护金属芯片,请避免经常将SIM 卡从手机中抽出;请将SIM卡置于超过85℃或 低于-35℃的环境中;在取出或放入SIM卡前, 请先关闭手机电源;在手机出现低电源警告时, 请关闭手机,再更换电池。
PIN码的初始值一般为1234,用户可自行更改, 更改步骤如下: 进入菜单,选定SIM卡锁。 ——选定新PIN ——输入原PIN,按YES ——输入新PIN,按YES ——再输入新PIN,按YES 如果连续三次输错PIN,屏幕显示:
PUK: ——输入PUK,按YES ——输入新PIN,按YES ——再输入新PIN,按YES 对于摩托罗拉手机,一般在输入PUK之前都必 须先输入**05*再输PUK码。 需要说明的是,手机大多还设置了手机锁,它 可以防止手机被盗后的滥用,一般购买手机时 手机锁未启动,它可以通过手机菜单进行设置 和更改。一般初始密码为“0000”。
手机SIM卡的认识及其密码
SM卡是数字蜂窝移动电话的用户识别卡,它 的全称是“用户识别模块”。在GSM数字移 动电话系统中,SIM卡起着极其重要的作用, 它既是手持机的一个重要组成部分,又是为每 一个GSM移动电话用户配备的身份卡,因此, SIM卡实现了认人不认机的构想。更多内容, 笔者今天就跟大家讲解一下:手机SIM卡的认 M卡有卡片式和嵌入式两种,习惯上又称为“大卡” 和“小卡”,两者外形尺寸虽有差别,功能却完全相 同。 大卡的尺寸与信用卡相同,主要用于便携台和车载台, 此外,早期的摩托罗拉308、328和西门子S3等手机 也使用这种大卡。小卡尺寸比普通的邮票还要小一点 (25mmxl5mm),主要用于各种新式手机,如摩托罗 拉P7689、V998、T2688,诺基亚3310、8210,爱 立信T28、T29等。其实大卡上面真正起作用的还是 小卡。在大卡的中间用镂空的方式切了几道细槽,只 用4个小接点固定在小卡上,当使用小卡时只需用手 指一拨,就能将中间部分掰下来,然后插入手机当小 卡使用。
SIM卡简介
SIM卡简介
SIM卡(Subscriber Identity Module 客户识别模块),也称为智能卡、用户身份识别卡,GSM 数字移动电话机必须装上此卡方能使用。
SIM卡是一个安全的物理模块,它包含了IMSI,鉴权算法,鉴权密钥及其它一些与安全相关的信息及功能。
SIM卡最基本的功能是通过对最终用户的鉴权来达到阻止非法使用移动网路的可能性。
SIM卡在硅芯片上存储了数字移动电话客户的信息,加密的密钥等内容,可供GSM网络客户身份进行鉴别,并对客户通话时的语音信息进行加密,防止了并机和通话被窃听行为,且SIM卡的制作是严格按照GSM国际标准和规范来完成的,可靠地保障了客户的正常通信。
SIM卡发展历程
第一阶段(PhaseⅠ/Ⅱ):卡片EEPROM的容量有2K、3K、8K、16K,仅提供语音功能。
第二阶段(PhaseⅡ+):卡片EEPROM的容量有32K、64K,可提供STK应用。
第三阶段(OTA卡):此阶段的卡不仅表现在空中下载技术(OTA)的应用,还体现在非接触应用上,如手机支付、电子钱包、身份识别等。
卡片EEPROM的容量有128K、128M、4M~2G。
SIM卡基础知识
SIM卡的作用——鉴权
• 原理
– SIM卡中内置加密算法和加密密钥,根据网络下 发的公钥计算加密值,再由手机上报给网络, 进行鉴权
• 目的
– 确认SIM卡的使用者是否为合法用户 – 识别SIM卡的使用者身份,并确定计费对象
SIM卡的作用——身份标识
• SIM卡的标识主要是ICCID和I号 – 两者理论上都是唯一的
• 运行时信息
– 通话时间统计 – 上次注册的PLMN – 其他
SIM卡的作用——增值业务
• 运营商内置在SIM卡中的一些应用,主要以 STK的形式提供
SIM相关协议
• • • • • ETSI TS 102 221 ETSI TS 102 223 3GPP TS 31.XXX 3GPP TS 51.011 3GPP2 C.S0023-D
• NOTE: An application can be a first level application and/or a second level application.
• first level application: selectable application that is indicated in EFDIR under the MF
SIM文件结构示意图
RUIM常见的文件结构
SIM文件操作
• SELECT by File IDentifier referencing • SELECT by path referencing • Short File Identifier (SFI)
– – – – – – – – READ BINARY UPDATE BINARY READ RECORD UPDATE RECORD INCREASE SEARCH RECORD RETRIEVE DATA SET DATA
手机SIM卡介绍
手机SIM卡介绍三类不同标准的SIM卡【手机SIM卡介绍】首先小编就给大家介绍一下,目前已知的都有哪些不同标准的SIM卡。
SIM卡的全称是Subscriber Identity Module,翻译过来也叫客户识别模块,也叫做智能卡、用户身份识别卡。
这块小小的芯片可以存储用户的号码、信息,以及一定数量的联系人数据,配合我们日常使用的手机,可以直接进行联网。
SIM标准SIM卡图片如上图所示,这个就是标准的SIM卡。
标准卡的尺寸为25×15毫米,基本上和指甲盖的大小差不多。
标准卡虽然尺寸一样,但是容量还是有所区别的,从8KB、16KB、32KB到64KB 都有,而512KB以上的大容量SIM卡就统称为STK卡。
由于目前大部分手机的卡槽大小规格都是相同的,所以标准卡目前仍属于主流SIM卡规格。
Micro SIM目前市面上除了标准卡以外,还有一种Micro SIM,尺寸为12×15毫米。
这种卡目前主要应用于苹果的iPhone 4、iPhone 4S,以及支持3G的iPad产品。
虽然可以通过对标准卡剪卡的方式“改造”,但是也有可能因为剪卡而导致SIM卡受损,无法使用。
市面上还拥有Micro SIM卡专用的卡托,用来转换成标准卡使用,但是卡托的质量不一导致SIM卡厚度增加,严重则会导致SIM卡无法正常取出。
目前三大运营商都已推出了正式的Micro SIM卡,用户可以直接去营业厅办理。
移动的SIM卡和Micro SIM对比图片Nano SIMNano SIM卡是苹果力推的一种全新规格的SIM卡。
这种Nano SIM卡比Micro SIM卡在尺寸上减小了三分之一,比起标准卡小了一大半,在厚度上也有所减少。
起初,Nano SIM 遭到了诺基亚、摩托罗拉等手机大厂商的反对。
但是不久后,Nano SIM卡设计提案还是被欧洲电信标准协会采纳,而其它厂商联合提交支持Micro SIM卡的提案落选。
相信在iPhone 5的身上,我们将会见到Nano SIM的身影。
SIM卡技术介绍
SIM卡技术介绍简介:用户身份模块(Subscriber Identity Module,SIM ),通常称为“SIM卡”,SIM卡由CPU(8位/16位/32位)、程序存储器ROM、工作存储器RAM、数据存储器EEPROM和I/O电路组成。
用户使用SIM时,实际上是手机向SIM卡发出命令,SIM卡应该根据标准规范来执行或者拒绝;而在SIM卡在与手机连接时至少需要5个连接线:电源(Vcc)、时钟(CLK)、数据I/O口(Data)、复位(RST)、接地端(GND);SIM卡并不是单纯的信息存储器。
SIM卡具有存储量,一般是32K,最大可以达到1G的内存。
另外SIM卡有卡号和密码,卡号有20位数码,数字都有特定的含义,PIN码是SIM卡的密码,它主要是用来保护互用资料信息的安全。
国际标准:从专业名词来说,“SIM卡”可分为2FF卡,3FF卡(又称Micro-SIM 卡),乃至未来的4FF 卡,4FF卡是fourth form factor SIM的简称。
在卡国际标准组织SCP的2011年3月会议中,Apple在建议要做标准化4FF卡的项目,是一种比3FF卡更小的SIM卡标准,用于下一代iPad。
其实,SIM卡的最早版本是与标准信用卡相同(85×54×0.78毫米),为卡片式(又称大卡),触点则符合ISO 7816对ID-1型IC卡的规定。
功能:SIM卡有四大功能:一、存储用户相关数据,二、用户PIN的操作和管理,三、用户身份鉴权,四、SIM卡中的保密算法及密钥。
扩展:在SIM卡里面还有一种特殊的SIM卡,称为RF-SIM卡,将芯片和天线完全封装在卡片内部,这种卡的表面没有触点,通过电磁耦合的方式与读写模块进行通信。
使用2.4GHz频段,自动选频;通讯速率1Mbps,高可靠连接与通信;支持自动感应和主动触发连接两种通信方法;双向通信距离10CM-500CM,可以根据应用调整;单向数据广播(半径100M);刷卡感应功能可自行启闭(节能);多机协同工作(半径5米内可有32个Pos);数据空中传输自动3DES加密,防数据窃听,刷卡时双向认证。
SIM卡详细讲解
SIM卡详细讲解前话:今天使⽤华为的GTM900B模块的时候,⽤他们的参考电路制板,最后才发现SIM卡的管脚定义与我们早期所⽤的不⼀致,害得我得把已经布线完毕的PCB板还得再⼤改⼀番。
为了下次不犯相同的错误,这⾥把SIM卡的基础知识做个笔记,也希望对以后的学习有所帮助。
主要内容都出⾃⽹上,我整理添加⼀下。
SIM卡(Subscriber Identity Module)。
即⽤户识别模块,是⼀张符合GSM规范的"智慧卡"。
SIM卡可以插⼊任何⼀部符合GSM 规范的移动电话中,"实现电话号码随卡不随机的功能",⽽通话费则⾃动计⼊持卡⽤户的帐单上,与⼿机⽆关。
SIM卡作为智能卡中特殊的⼀类卡,采⽤标准的接触式IC卡。
他受到ISO7816标准(接触式集成电路IC卡的规定)和ETSI(欧洲电信标准委员会)的GSM11.11等标准的规范。
他沿袭了智能卡在安全中的特⾊,并在移动⽤户认证和移动商务中扮演重要的⾓⾊。
2 SIM卡常识SIM卡是⼀张符合GSM规范"智能卡",他实际上是⼀个装有微处理器的芯⽚卡,内部有5个模块,且每个模块都对应⼀个功能:CPU(8位)、程序存储器(3~8 kb)、⼯作存储器(6~16 kb)、数据存储器(128~256 kb)和串⾏通信单元。
SIM卡能实现存储数据(电话本、短消息等)和在安全条件下(个⼈⾝份号码PIN、鉴权钥Ki正确)完成客户⾝份鉴权和客户信息加密算法的全过程。
这些功能都是由SIM卡内的⼀部具有操作系统的微处理机完成。
SIM卡具有机卡分离(SIM-ME接⼝)、通信安全可靠、成本低等特点。
(1) SIM卡的物理特征:可以分尺⼨为54 mm×84 mmID-1 SIM(⼤卡)和尺⼨为25 mm×15 mmPlug-in SIM(⼩卡,我们⼀般⽤的应该就是这个)两种。
(2) SIM卡的存储容量:⼀般SIM卡有8 kB的存储容量,另外还有容量分别为16 k和32 k的SIM卡,即STK SIM卡。
sim卡详细资料
一、概述移动电话机与SIM卡共同构成移动通信终端设备。
无论是GSM 系统还是CDMA系统,数字移动电话机用户在“入网”时会得到一张SIM卡(Subscriber Identity Module)或UIM卡(User Identity Module)。
SIM卡是一张符合GSM规范的“智慧卡”,可以插入任何一部符合GSM规范的移动电话中,实现“电话号码随卡不随机的功能”,而且通话费用自动计入持卡用户的账单上,与手机无关。
二、SIM卡硬件特性1、外部特征在实际使用中有两种功能相同而形式不同的SIM卡:卡片式(俗称大卡)SIM卡,这种形式的SIM卡符合有关IC卡的ISO7816标准,类似IC卡。
嵌入式(俗称小卡)SIM卡,其大小只有25mm ×15mm,是半永久性地装入到移动台设备中的卡。
“大卡”上真正起作用的是它上面的那张“小卡”,而“小卡”上起作用的部分则是卡面上的铜制接口及其内部胶封的卡内逻辑电路。
目前国内流行样式是“小卡”,小卡也可以换成“大卡”(需加装一卡托)。
“大卡”和“小卡”分别适用于不同类型的GSM移动电话,早期机型如摩托罗拉GC87C、308C等手机用的是“大卡”,而目前新出的机型基本上都使用“小卡”。
2、SIM卡接口SIM卡是通过卡面上铜制接口来连接卡内逻辑电路与移动终端的,SIM卡芯片有八个触点,通常与移动设备连接需要六个触点,具体接口定义如下图所示:(抱歉,本论坛暂时无法直接上传图片。
-by SL)3、内部结构SIM卡是一个装有微处理器的芯片卡,它的内部有5个模块,并且每个模块都对应一个功能:微处理器CPU(8位)、程序存储器ROM (3--8kbit)、工作存储器RAM(6--16kbit)数据存储器EEPROM (128--256kbit)和串行通信单元。
这5个模块被胶封在SIM卡铜制接口后与普通IC卡封装方式相同。
这五个模块必须集成在一块集成电路中,否则其安全性会受到威胁。
sim卡原理
sim卡原理SIM卡原理。
SIM卡,即Subscriber Identity Module,是指用户识别模块,是手机用户的身份证明。
它是一种集成电路卡,内置有手机用户的个人信息,如电话号码、短信、联系人等。
SIM卡的原理是通过存储用户信息和加密算法来实现手机用户的身份识别和通信安全。
下面我们将详细介绍SIM卡的原理。
首先,SIM卡内部结构主要包括芯片和金属片。
芯片是SIM卡的核心部件,包括CPU、存储器和加密模块。
CPU负责处理SIM卡的运算和控制,存储器用于存储用户信息和运行程序,加密模块用于对通信数据进行加密和解密。
金属片则用于与手机进行接触,传输数据和电源。
其次,SIM卡的原理是基于国际移动用户识别码(IMSI)和加密算法实现的。
IMSI是唯一标识手机用户身份的号码,存储在SIM卡中。
当手机用户插入SIM卡并开机时,手机会读取SIM卡中的IMSI,并发送给运营商的基站进行验证。
基站通过验证IMSI来确认用户的身份,并为用户提供通信服务。
同时,SIM卡中的加密算法会对通信数据进行加密,确保通信的安全性。
另外,SIM卡还包括了PIN码和PUK码。
PIN码是个人识别码,用于保护SIM卡的安全。
用户在插入SIM卡时需要输入PIN码进行解锁,否则无法使用SIM卡。
如果连续输入错误的PIN码,SIM卡会被锁定,需要使用PUK码进行解锁。
PUK码是PIN码的解锁码,只有在输入PUK码后才能重新设置PIN码。
此外,SIM卡的原理还涉及到了通信协议和安全机制。
SIM卡与手机之间的通信采用ISO7816标准的通信协议,确保了SIM卡与手机的兼容性。
同时,SIM卡内部的加密算法和安全机制可以有效防止用户信息的泄露和通信的被窃听。
总之,SIM卡的原理是通过存储用户信息和加密算法来实现手机用户的身份识别和通信安全。
它是手机用户的身份证明,保障了通信的安全性和用户信息的保密性。
通过了解SIM卡的原理,我们可以更好地理解手机通信的工作原理,提高通信安全意识,保护个人信息的安全。
SIM卡知识介绍
PIN/PUK
➢ SIM卡的密码: SIM卡的密码是为了保护运营商和用户的合法权益而设,按GSM标准中以卡内文件访问条件的形式来
实现其保护作用。
PIN
3次
PUK
10次
锁了!~
Ki
➢ 用户鉴权密钥,128位; ➢ Ki是SIM卡中的关键数据之一,直接影响用户登陆网络 ➢ 用在在鉴权算法A3和密钥生成算法A8中 ➢ Ki安全性要求非常高
在电信领域中,IC卡已从公用预付费电话卡扩展到移动通信手机中。
目前,以GSM为代表的第二代移动通信技术已经成熟。
SIM卡发展概述
➢ SIM卡的容量及功能演进
•128K •64K •32K •8K/16K •3K •1K
安全性 支持
多种通信网络
强强大大的的个个人人信信息息管管理理功功能能
支持多种移动增值服务功能 STK应用
认识几个常见概念
➢ ICC: Integrated Circuit Card,集成电路卡 ➢ UICC: Universal Integrated Circuit Card,通用集成电路卡 ➢ USIM: Universal Subscriber Identity Module ,通用用户识别模块
Vcc:提供工作电压 RST:复位信号 CLK:时钟输入端
GND:参考地电压 VPP:编程电输入 I/O:双向数据端口
SIM卡的软件结构
➢ 是一个软件和硬件的组合产品
IS0/IEC 7816等标准
➢ 具有系统、文件、指令 、业务四层结构 GSM11.11、 GSM11.14等标准
应用业务 指令系统层 文件系统层 操作系统层(COS)
分提纲
SIM卡基本知识简介
SIM卡的发展历史概述
SIM卡简介
SIM卡SIM卡(Subscriber Identity Module)即用户身份模块,除某些特殊情况(例如紧急呼叫),在没有SIM卡时,GSM用户不能接入GSM服务。
该模块可以说是GSM用户功能实体,它包含了所有的用户数据,特别是鉴别用户过程和与用户有关的信息。
SIM卡应符合ISO7816标准,该标准确定了机电特性和微电路卡功能,常被称为“跳蚤”卡。
在Phase2+中GSM建议定义了一个控制底板,SIM卡能将其联于移动台。
人们说SIM卡为“前激活”。
SIM卡通过与网络发送的短消息相结合,提供了一些重要的能力,即确定了对每个运营者的特殊服务。
1 一般性能1.1 幅面人们通过尺寸区别两种形式的SIM卡:大的ID-1型SIM卡和小的plug-in型SIM卡·ID-1型SIM卡,其尺寸与信用卡一样。
它符合规范IOS7810和7811,嵌入和取出这种卡比Plug-in型SIM卡要快。
·Plug-in型SIM卡,其尺寸小。
这种卡是手机常用的形式。
它在手机中的嵌入和取出不如ID-1型SIM卡那么简单。
“规范”中规定了基站可同时接受ID-1型和Plug-in型两种SIM卡。
对移动台来说,ID-1型SIM卡在呼叫期是嵌入的,那么它只用到呼叫结束。
如果ID-1型SIM卡被取出,则Plug-in 型SIM卡可接入使用。
最后,在呼叫期间如果取出ID-1型SIM卡,呼叫则自动中断。
1.2 安全特性SIM卡内有一定数量的安全字符。
作为“跳蚤”卡,它具有一个密钥集,用以保障不同介入者的个性安全(制造商、运营者……)。
SIM卡还有密钥和GSM专用的验证算法,它用了4至8个数字密码,称之为CHV1和CHV2。
CHV1码(Card Holder Verififccation1)用于用户身份。
它常常在GSM的Phase1中使用,以个人身份码PIN(Personal Identity Number)来表示。
一个有缺陷的码在服务预订期内由供应商负责。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android学习笔记_SIM卡介绍一、判断SIM卡属于哪个移动运营商1、第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信TelephonyManager telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);/**获取SIM卡的IMSI码* SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,* 储存在SIM卡中,可用于区别移动用户的有效信息。
IMSI由MCC、MNC、MSIN 组成,其中MCC为移动国家号码,由3位数字组成,* 唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成,* 用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01,中国电信为03;MSIN为移动客户识别码,采用等长11位数字构成。
* 唯一地识别国内GSM移动通信网中移动客户。
所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可*/String imsi = telManager.getSubscriberId();if(imsi!=null){if(imsi.startsWith("46000") || imsi.startsWith("46002")){//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号段使用了此编号//中国移动}else if(imsi.startsWith("46001")){//中国联通}else if(imsi.startsWith("46003")){//中国电信}}2、第二种方法:TelephonyManager telManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);String operator = telManager.getSimOperator();if(operator!=null){if(operator.equals("46000") || operator.equals("46002")){//中国移动}else if(operator.equals("46001")){//中国联通}else if(operator.equals("46003")){//中国电信}}二、从SIM卡中获取联系人信息1、可以通过内容提供者进行访问,下面是主要代码。
Uri uri = Uri.parse("content://icc/adn");String[] projection = {"_id", "name", "number"};Cursor cursor = managedQuery(uri, projection, null, null, "name"); if(cursor!=null){while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));String phone = cursor.getString(cursor.getColumnIndex("number"));}}/*在文件AndroidManifest.xml中添加权限<uses-permission android:name="android.permission.READ_PHONE_STATE"/>Android系统内部通过Contentprovider对外共享Sim卡存放的联系人等信息,你可以通过操作Contentprovider来实现Sim卡信息的添删改查操作。
*/2、完整代码如下:package com.android.internal.telephony;import android.content.ContentProvider;import android.content.UriMatcher;import android.content.ContentValues;import com.android.internal.database.ArrayListCursor;import android.database.Cursor;import .Uri;import android.os.SystemProperties;import android.os.RemoteException;import android.os.ServiceManager;import android.text.TextUtils;import android.util.Log;import java.util.ArrayList;import java.util.List;import com.android.internal.telephony.IccConstants;import com.android.internal.telephony.AdnRecord;import com.android.internal.telephony.IIccPhoneBook;public class IccProvider extends ContentProvider {private static final String TAG = "IccProvider";private static final boolean DBG = false;private static final String[] ADDRESS_BOOK_COLUMN_NAMES = new String[] {"name", "number" };private static final int ADN = 1;private static final int FDN = 2;private static final int SDN = 3;private static final String STR_TAG = "tag";private static final String STR_NUMBER = "number";private static final String STR_PIN2 = "pin2";private static final UriMatcher URL_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);static {URL_MATCHER.addURI("icc", "adn", ADN);URL_MATCHER.addURI("icc", "fdn", FDN);URL_MATCHER.addURI("icc", "sdn", SDN);}private boolean mSimulator;@Overridepublic boolean onCreate() {String device = SystemProperties.get("ro.product.device");if (!TextUtils.isEmpty(device)) {mSimulator = false;} else {//simulatormSimulator = true;}return true;}@Overridepublic Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) {ArrayList<ArrayList> results;if (!mSimulator) {switch (URL_MATCHER.match(url)) {case ADN:results = loadFromEf(IccConstants.EF_ADN);break;case FDN:results = loadFromEf(IccConstants.EF_FDN);break;case SDN:results = loadFromEf(IccConstants.EF_SDN);break;default:throw new IllegalArgumentException("Unknown URL " + url);}} else {//Fake up some data for the simulatorresults = new ArrayList<ArrayList>(4);ArrayList<String> contact;contact = new ArrayList<String>();contact.add("Ron Stevens/H");contact.add("512-555-5038");results.add(contact);contact = new ArrayList<String>();contact.add("Ron Stevens/M");contact.add("512-555-8305");results.add(contact);contact = new ArrayList<String>();contact.add("Melissa Owens");contact.add("512-555-8305");results.add(contact);contact = new ArrayList<String>();contact.add("Directory Assistence");contact.add("411");results.add(contact);}return new ArrayListCursor(ADDRESS_BOOK_COLUMN_NAMES, results);}@Overridepublic String getType(Uri url) {switch (URL_MATCHER.match(url)) {case ADN:case FDN:case SDN:return "vnd.android.cursor.dir/sim-contact";default:throw new IllegalArgumentException("Unknown URL " + url); }}@Overridepublic Uri insert(Uri url, ContentValues initialValues) { Uri resultUri;int efType;String pin2 = null;if (DBG)log("insert");int match = URL_MATCHER.match(url);switch (match) {case ADN:efType = IccConstants.EF_ADN;break;case FDN:efType = IccConstants.EF_FDN;pin2 = initialValues.getAsString("pin2");break;default:throw new UnsupportedOperationException("Cannot insert into URL: " + url);}String tag = initialValues.getAsString("tag");String number = initialValues.getAsString("number");boolean success = addIccRecordToEf(efType, tag, number, pin2);if (!success) {return null;}StringBuilder buf = new StringBuilder("content://im/");switch (match) {case ADN:buf.append("adn/");break;case FDN:buf.append("fdn/");break;}//TODO: we need to find out the rowId for the newly added recordbuf.append(0);resultUri = Uri.parse(buf.toString());/** // notify interested parties that an insertion happened* getContext().getContentResolver().notifyInsert( resultUri, rowID, * null);*/return resultUri;}private String normalizeValue(String inVal) {int len = inVal.length();String retVal = inVal;if (inVal.charAt(0) == '\'' && inVal.charAt(len - 1) == '\'') { retVal = inVal.substring(1, len - 1);}return retVal;}@Overridepublic int delete(Uri url, String where, String[] whereArgs) {int efType;if (DBG)log("delete");int match = URL_MATCHER.match(url);switch (match) {case ADN:efType = IccConstants.EF_ADN;break;case FDN:efType = IccConstants.EF_FDN;break;default:throw new UnsupportedOperationException("Cannot insert into URL: " + url);}//parse where clauseString tag = null;String number = null;String pin2 = null;String[] tokens = where.split("AND");int n = tokens.length;while (--n >= 0) {String param = tokens[n];if (DBG)log("parsing '" + param + "'");String[] pair = param.split("=");if (pair.length != 2) {Log.e(TAG, "resolve: bad whereClause parameter: " + param); continue;}String key = pair[0].trim();String val = pair[1].trim();if (STR_TAG.equals(key)) {tag = normalizeValue(val);} else if (STR_NUMBER.equals(key)) {number = normalizeValue(val);} else if (STR_PIN2.equals(key)) {pin2 = normalizeValue(val);}}if (TextUtils.isEmpty(tag)) {return 0;}if (efType == FDN && TextUtils.isEmpty(pin2)) {return 0;}boolean success = deleteIccRecordFromEf(efType, tag, number, pin2); if (!success) {return 0;}return 1;}@Overridepublic int update(Uri url, ContentValues values, String where,String[] whereArgs) {int efType;String pin2 = null;if (DBG)log("update");int match = URL_MATCHER.match(url);switch (match) {case ADN:efType = IccConstants.EF_ADN;break;case FDN:efType = IccConstants.EF_FDN;pin2 = values.getAsString("pin2");break;default:throw new UnsupportedOperationException("Cannot insert into URL: " + url);}String tag = values.getAsString("tag");String number = values.getAsString("number");String newTag = values.getAsString("newTag");String newNumber = values.getAsString("newNumber");boolean success = updateIccRecordInEf(efType, tag, number, newTag, newNumber, pin2);if (!success) {return 0;}return 1;}private ArrayList<ArrayList> loadFromEf(int efType) { ArrayList<ArrayList> results = new ArrayList<ArrayList>(); List<AdnRecord> adnRecords = null;if (DBG)log("loadFromEf: efType=" + efType);try {IIccPhoneBook iccIpb = IIccPhoneBook.Stub.asInterface(ServiceManager.getService("simphonebook")); if (iccIpb != null) {adnRecords = iccIpb.getAdnRecordsInEf(efType);}} catch (RemoteException ex) {//ignore it} catch (SecurityException ex) {if (DBG)log(ex.toString());}if (adnRecords != null) {//Load the resultsint N = adnRecords.size();if (DBG)log("adnRecords.size=" + N);for (int i = 0; i < N; i++) {loadRecord(adnRecords.get(i), results);}} else {//No results to loadLog.w(TAG, "Cannot load ADN records");results.clear();}if (DBG)log("loadFromEf: return results");return results;}private boolean addIccRecordToEf(int efType, String name, String number, String pin2) {if (DBG)log("addIccRecordToEf: efType=" + efType + ", name=" + name+ ", number=" + number);boolean success = false;//TODO: do we need to call getAdnRecordsInEf() before calling//updateAdnRecordsInEfBySearch()? In any case, we will leave//the UI level logic to fill that prereq if necessary. But//hopefully, we can remove this requirement.try {IIccPhoneBook iccIpb = IIccPhoneBook.Stub.asInterface(ServiceManager.getService("simphonebook"));if (iccIpb != null) {success = iccIpb.updateAdnRecordsInEfBySearch(efType, "", "", name, number, pin2);}} catch (RemoteException ex) {//ignore it} catch (SecurityException ex) {if (DBG)log(ex.toString());}if (DBG)log("addIccRecordToEf: " + success);return success;}private boolean updateIccRecordInEf(int efType, String oldName, String oldNumber, String newName, String newNumber, String pin2) { if (DBG)log("updateIccRecordInEf: efType=" + efType + ", oldname="+ oldName + ", oldnumber=" + oldNumber + ", newname="+ newName + ", newnumber=" + newNumber);boolean success = false;try {IIccPhoneBook iccIpb = IIccPhoneBook.Stub.asInterface(ServiceManager.getService("simphonebook"));if (iccIpb != null) {success = iccIpb.updateAdnRecordsInEfBySearch(efType, oldName, oldNumber, newName, newNumber, pin2);}} catch (RemoteException ex) {//ignore it} catch (SecurityException ex) {if (DBG)log(ex.toString());}if (DBG)log("updateIccRecordInEf: " + success);return success;}private boolean deleteIccRecordFromEf(int efType, String name, String number, String pin2) {if (DBG)log("deleteIccRecordFromEf: efType=" + efType + ", name=" + name + ", number=" + number + ", pin2=" + pin2);boolean success = false;try {IIccPhoneBook iccIpb = IIccPhoneBook.Stub.asInterface(ServiceManager.getService("simphonebook"));if (iccIpb != null) {success = iccIpb.updateAdnRecordsInEfBySearch(efType, name,number, "", "", pin2);}} catch (RemoteException ex) {//ignore it} catch (SecurityException ex) {if (DBG)log(ex.toString());}if (DBG)log("deleteIccRecordFromEf: " + success);return success;}/*** Loads an AdnRecord into an ArrayList. Must be called with mLock held. ** @param record* the ADN record to load from* @param results* the array list to put the results in*/private void loadRecord(AdnRecord record, ArrayList<ArrayList> results) {if (!record.isEmpty()) {ArrayList<String> contact = new ArrayList<String>(2);String alphaTag = record.getAlphaTag();String number = record.getNumber();if (DBG)log("loadRecord: " + alphaTag + ", " + number);contact.add(alphaTag);contact.add(number);results.add(contact);}}private void log(String msg) {Log.d(TAG, "[IccProvider] " + msg);}}三、删除呼叫记录1、加入权限在文件AndroidManifest.xml中添加权限<uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/>2、设置内容提供者负责存放呼叫记录的内容提供者源码在ContactsProvider项目下:源码路径:com\android\providers\contacts\CallLogProvider.java使用到的数据库在:/data/data/com.android.providers.contacts/databases/contacts2.db表名:calls呼叫记录有三种类型:来电:CallLog.Calls.INCOMING_TYPE (常量值:1)外拔:CallLog.Calls.OUTGOING_TYPE(常量值:2)3、删除指定号码的来电或未接呼叫记录:IncomingCallLogContentObserver observer = new IncomingCallLogContentObserver(new Handler());observer.setNumber("5554");getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_UR I, true, observer);private class IncomingCallLogContentObserver extends ContentObserver { private String number;public IncomingCallLogContentObserver(Handler handler){super(handler);}public void setNumber(String number){this.number = number;}public void onChange(boolean paramBoolean){ContentResolver contentResolver = getContentResolver();if(number!=null){Uri localUri = CallLog.Calls.CONTENT_URI;Cursor cursor = contentResolver.query(localUri, new String[]{"_id"}, "number=? AND (type=1 OR type=3)",new String[]{number}, "_id desc limit 1");if(cursor.moveToFirst()){contentResolver.delete(localUri, "_id=?", newString[]{cursor.getString(0)});}cursor.close();}contentResolver.unregisterContentObserver(this);}}。