Android作为一个智能手机操作系统,SDK对SIM卡的读取有相关的操作,都封装在framework中

和SIM卡相关的类主要有以下几个:

IccConstants  (里面记录很多的常量,主要用来存储某个字段在SIM卡上的位置是什么,比如ADN(sim卡上的电话本),6F3A,  FDN(固定拔号 6F3B))IccCardStatus(记录SIM卡的状态,如ABSENT, READY,UNKNOW,ETC)

IccFileHandler(这个是用来SIM卡上的RECORD读完后,要处理什么事情)

IccRecords(SIM卡上的文件内容,每一个字段,一个RECORD)

IccProvider(手机上的数据库,读出来的数据全放这)

IccUtils(里面一般全是静态方法,主要用来码制转换)

IccSmsInterfaceManager,IccCard(这个是一个抽象类,会根据上面手机的制式,自动起一个SIMCARD 或者RUIMCARD)

以GSM为例说下读取的过程:

根据SIM卡的类型,进入SIMRecords, 开始探测SIM卡的状态,因为,有些SIM卡会设置有PIN码,如果SIM卡有PIN码的话,手机会弹出输入PIN码的框,等待用户进行解码,注意,这个时候,如果PIN码如果没有解的话,手机是不会去读SIM卡的,因为,读SIM卡时,必须通过PIN才能去读,只有一些比较特殊的字段,可以不用,比如ECC 也就是紧急呼叫号码(一般存在卡上,运营商定制的)。同时,这PIN码未解的情况,手机中SIM卡的状态也是PIN_REQURIED_BLOCK。

当解完PIN码,或是手机没有设置PIN码,这时,手机的会探测到SIM是READY的状态,手机只有检测到SIM READY,才会发出读卡的请求。

手机开始读卡第一个是IMSI(International Mobile SubscriberIdentification Number)主要用来查找运营商的网络,里面有MCC,MNC,ICCID(Integrate circuit card identity)唯一标识一个移动用户。

当低层的MODEM读到字段结果后,会有一个返回结果,由于发送读取请求时,有一个事件信息EVENT_GET_BINARY_SIZE_DONE,当有返回时,会直接交给IccFileHandler,然后由IccFileHandler转发给SIMRecords,最后进行处理该字段读完后应该执行的操作。

android判断sim卡是否存在,android 判断sim卡是否存在相关推荐

  1. android部分代码片段(例:判断设备为手机,获取mac地址,软键盘,唤醒屏幕等)

    部分代码片段: 1.唤醒屏幕并解锁 public static void wakeUpAndUnlock(Context context){ KeyguardManager km= (Keyguard ...

  2. PHP判断iPhone、iPad、Android、PC设备的方法

    因为工作需要我们需要知道是什么样了用户访问了我网站了,现在的移动设备种类多了,下面我们一起来看小编整理的一段php判断iPhone.iPad.Android.PC设备的例子. 注意:本代码的PC系统为 ...

  3. Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC

    获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...

  4. php 判断苹果还是安卓,PHP简单判断iPhone、iPad、Android及PC设备的方法

    本文实例讲述了PHP简单判断iPhone.iPad.Android及PC设备的方法.分享给大家供大家参考,具体如下: 因为工作需要我们需要知道是什么样了用户访问了我网站了,现在的移动设备种类多了,下面 ...

  5. android+sim卡短信,android 信息(mms)开发(七)-- sim卡短信

    这篇关于android源码是如何操作sim卡上的信息说明,sim\usim卡的信息说起来这算是比较特别的一部分,由于android源码的信息是没有开机自动导卡信息和联系人的,所以有时会忘掉它的存在应该 ...

  6. 83.android 简单的获取手机SIM卡卡槽数量,当前SIM卡数量。

    //第一步 先加入权限,在AndroidManifest.xml里加入: <uses-permission android:name="android.permission.READ_ ...

  7. js识别android ios9,JS判断客户端是IOS还是ANDROID

    // 1. 定义终端判断对象 let browser = { versions: function () { let u = navigator.userAgent, app = navigator. ...

  8. JS 判断客户端是iOS还是Android

    通过浏览器的 navigator.userAgent 判断是Android还是IOS: 一.判断是Android还是iOS let u = navigator.userAgent; let isAnd ...

  9. JS 判断当前的浏览器是Android 还是IOS

    好记忆不如按烂笔头 ... ... 很多时候,一个很好的应用要做到很不错的兼容性,开发的页面要适应Android 和iso的显示,那么就需要在页面段做判断: 如下代码是判断当前浏览的是Android ...

最新文章

  1. Linux安装Hive并测试
  2. GDAL算法进度条使用说明
  3. oracledb_npm包的使用
  4. java 对外提供接口_Java服务器对外提供接口以及Android端向服务器请求数据
  5. python脚本根据cookies自动登录网站_python实现带验证码网站的自动登陆实现代码...
  6. 为什么 Linux 默认页大小是 4KB
  7. HDU 1686 Oulipo【kmp求子串出现的次数】
  8. Bootstrap缩略图.thumbnail
  9. 20200317_决策树预测贷款申请
  10. php ftp上传文件 源码,PHP FTP上传文件
  11. java反射机制原理详解
  12. 关于举办“2019 年全国传智杯 IT 技能大赛”的通知
  13. 任正非亲自参与,2021数字化转型再造华为!
  14. ES2015 Module(模块)
  15. PbootCMS制作个性分页条之单页/总页数效果详细介绍教程
  16. 如何切换计费模式中的“按需”和“包年包月”?
  17. iOS 手势的用法
  18. Linux系统用gcc编写C语言程序
  19. python 桌面程序自动化测试_对Windows桌面应用程序进行UI自动化测试
  20. CTFSHOW-文件包含

热门文章

  1. 计组期末复习之第七章:输入输出系统
  2. 软件设计难道不是敲代码么
  3. 普通电脑摄像头也可以做监控系统
  4. 苹果7手机没信号无服务器,它坑了多少果粉?iPhone7手机无服务还有感叹号,基带通病问题!...
  5. 国际网络领域会议:ACM SIGCOMM
  6. 分离php和mysql搭建LAMP平台
  7. Python+Vue计算机毕业设计食品质量安全追溯平台yoh8h(源码+程序+LW+部署)
  8. 春节返乡怕塞车,数据宝帮你预估车流量,心中有“数“,返乡不慌
  9. 麦块服务器正版登,我的世界麦块服务器1.7.2
  10. 联想台式计算机功率,【联想 扬天T4900C 台式机使用总结】设置|系统|功耗|性能_摘要频道_什么值得买...