Android4.X 应用层读取SIM卡联系人的过程
2013-12-24 14:56
246 查看
SIM卡里可以存储部分联系人数据 ,USIM卡也可以存储部分联系人数据,只不过USIM卡存储的联系人的数量更多,以及支持更多的联系人数据字段。
在Android 的应用层 是通过IccProvider 来读取SIM卡里的联系人的,主要有三个步骤
1.IccProvider 根据 EF_ID ,调用 IccPhoneBookInterfaceManager 的getAdnRecordsInEf 方法读取 电话本数据
2.IccPhoneBookInterfaceManager 从AdnRecordCache 中读取SIM卡的联系人数据,我们以GSM的SIM和WCDMA的USIM卡为例来说明.IccPhoneBookInterfaceManager 是一个Binder 服务类,Biner 接口是 IIccPhoneBook。AdnRecordCache 首先根据ef id 判断 要读取的联系人是2G SIM卡联系人还是3G USIM 卡联系人,如果是USIM,AdnRecordCache 就调用UsimPhoneBookManager
去加载 USIM卡上的联系人,如果是SIM,则按照2G SIM卡的方式去读取SIM卡联系人。读取SIM卡联系人数据的过程是异步的。IccPhoneBookInterfaceManager 会在getAdnRecordsInEf 方法中一直等待SIM卡联系人数据加载完毕,这个是通过同步对象的wait 方法实现的。在SIM卡联系人数据加载完毕之前,getAdnRecordsInEf 所在的线程都是被阻塞的。直到将所有的SIM卡联系人数据全部读取完毕,getAdnRecordsInEf 所在的线程才会被唤醒。全部数据就会返回给IccProvider
. 在IccRecords 对象的初始化的时候,AdnRecordCache 并没有去读取SIM卡上的联系人的数据,所以在AdnRecordCache 第一次读取SIM卡上的联系人的数据所花费的时间会比较长,第二次读取的时间会快很多。
3.IccProvider 将返回的数据,封装成Cursor 返回给应用层。
读取过程时序图如下
根据SIM卡联系人的读取过程,我们可以在开机启动的时候,一旦SIM卡应用程序(UiccCardApplication)的状态就绪(AppState),就让 AdnRecordCache 去加载 SIM卡的联系人。等到Launcher 启动完毕后,SIM卡联系人的数据差不多也加载完毕。
在Android 的应用层 是通过IccProvider 来读取SIM卡里的联系人的,主要有三个步骤
1.IccProvider 根据 EF_ID ,调用 IccPhoneBookInterfaceManager 的getAdnRecordsInEf 方法读取 电话本数据
2.IccPhoneBookInterfaceManager 从AdnRecordCache 中读取SIM卡的联系人数据,我们以GSM的SIM和WCDMA的USIM卡为例来说明.IccPhoneBookInterfaceManager 是一个Binder 服务类,Biner 接口是 IIccPhoneBook。AdnRecordCache 首先根据ef id 判断 要读取的联系人是2G SIM卡联系人还是3G USIM 卡联系人,如果是USIM,AdnRecordCache 就调用UsimPhoneBookManager
去加载 USIM卡上的联系人,如果是SIM,则按照2G SIM卡的方式去读取SIM卡联系人。读取SIM卡联系人数据的过程是异步的。IccPhoneBookInterfaceManager 会在getAdnRecordsInEf 方法中一直等待SIM卡联系人数据加载完毕,这个是通过同步对象的wait 方法实现的。在SIM卡联系人数据加载完毕之前,getAdnRecordsInEf 所在的线程都是被阻塞的。直到将所有的SIM卡联系人数据全部读取完毕,getAdnRecordsInEf 所在的线程才会被唤醒。全部数据就会返回给IccProvider
. 在IccRecords 对象的初始化的时候,AdnRecordCache 并没有去读取SIM卡上的联系人的数据,所以在AdnRecordCache 第一次读取SIM卡上的联系人的数据所花费的时间会比较长,第二次读取的时间会快很多。
3.IccProvider 将返回的数据,封装成Cursor 返回给应用层。
读取过程时序图如下
根据SIM卡联系人的读取过程,我们可以在开机启动的时候,一旦SIM卡应用程序(UiccCardApplication)的状态就绪(AppState),就让 AdnRecordCache 去加载 SIM卡的联系人。等到Launcher 启动完毕后,SIM卡联系人的数据差不多也加载完毕。
相关文章推荐
- Android4.X 应用层读取SIM卡联系人的过程
- Android 中SharedPreferences跨应用读取数据的
- Android应用《撕开美女衣服》的实现过程及源代码
- Android应用读取Excel文件的方法
- cocos2d-x_Android应用启动调用过程简析
- android应用中读取屏幕亮度、设置屏幕亮度、保持屏幕常量
- Android内核解读-应用的安装过程
- Android 应用点击图标到Activity界面显示的过程分析
- 关于android应用中的签名验证的查找过程
- Android应用优化过程分析
- Android4.X 的SIM卡信息的初始化过程
- 在Android系统外部和内部读取Android应用的签名
- Android应用开发-- 如何在页面切换的过程中屏蔽屏幕事件?
- Android 开发过程中物理返回键的运用(仿qq退出应用,仍在后台执行,但不销毁)
- android ContentProvider读取其他应用数据库
- 【Xamarin开发 Android 系列 12】 创建一个Json读取数据应用-添加定位服务
- Android应用《撕开美女衣服》的实现过程及源代码
- (大总结)从寻找fragment静态导入activity总是失败的解决方法中了解android应用的系统启动过程
- android系统源码之 系统应用安装过程(下)
- Android应用启动过程