SubscriptionInfo框架分析
来源:互联网 发布:女朋友胸很大知乎 编辑:程序博客网 时间:2024/06/05 06:01
本文讨论所涉及的类
vendor\qcom\proprietary\telephony-fwk\opt\telephony\src\java\com\qti\internal\telephony\UiccCardProvisioner.java vendor\qcom\proprietary\telephony-fwk\opt\telephony\src\java\com\qti\internal\telephony\QtiSubscriptionInfoUpdater.java frameworks\opt\telephony\src\java\com\android\internal\telephony\SubscriptionInfoUpdater.java frameworks\opt\telephony\src\java\com\android\internal\telephony\SubscriptionController.java frameworks\base\telephony\src\java\android\telephony\SubscriptionManager.java frameworks\base\telephony\src\java\android\telephony\SubscriptionInfo.java
UiccCardProvisioner是高通在M上新增的激活卡的类,
SubscriptionManager将SubscriptionController的接口暴露给其他模块,来获取当前插入卡的信息。通过Parcel接口类SubscriptionInfo传递给其他进程。
在卡插入后,框架会在数据库中保存卡的信息,包括卡的subid,iccid、slotid、carriername、mcc、mnc等。
在框架中通过SubscriptionInfoUpdater对卡进行一个更新的操作,对外提供subscriptionManager的接口对外访问,实际上是通过Binder调用SubscriptionController里面的方法。
1 框架内部通过subscriptionInfoUpdater更新卡的信息,首先卡信息只负责插入和更新,不会删除原来的记录,因此一张卡插入后它的subid是不会变的,其实是和对应的iccid一一对应的。在框架内部是通过subid来区分不同的卡。
subscriptionInfo更新有四种情况:
1 UiccCardProvisioner.queryUiccProvisionInfo 负责正常情况下添加
2 sim absent 负责拔卡情况下删除,只是将simSlotIndex设置为-1。
3 sim locked 负责pin码情况下添加
4 sim loaded
1 添加流程:
添加卡的信息是监听Icc_state_change事件。触发是在UiccCardProvisioner类。
其中有重要的一步是判断所有的iccid是否加载到,全部加载到才去更新数据(updateSubscriptionInfoByIccId)。通过判断两张卡的iccid不为null,其中卡absent是将iccid置为”“。查询到所有卡槽的iccid时刻:
分三种情况:
1 UiccCardProvisioner.queryUiccProvisionInfo
2 sim locked :实际上这一步不会发生因为在UiccCardProvisioner.queryUiccProvisionInfo里面就已经可以通过QcRilhook查询到iccid。
3 sim absent:absent是将iccid置为””
下面是卡报pin码锁的时候获取iccid的流程,主要是通过fileHandler查询卡字段EF_ICCID:2fe2
通过分析可以知道更新操作updateSubscriptionInfoByIccId,只有在添加和删除的时候会触发。该函数执行是一个耗时操作。
- SubscriptionInfo框架分析
- SubscriptionInfo框架解析
- 浅析SubscriptionInfo
- android SubscriptionInfo更新流程
- SubscriptionManager,SubscriptionInfo,TelephonyManager的使用
- Android N SIM卡 SubscriptionInfo 添加与维护
- SSH框架总结-框架分析
- web层框架分析
- 搜索引擎时间分析框架
- AJAX框架分析
- 插件系统框架分析
- iBATIS DAO框架分析
- AJAX框架汇总分析
- 插件系统框架分析
- 插件系统框架分析
- 插件系统框架分析
- 插件系统框架分析
- 插件系统框架分析
- 机器学习&深度学习资料汇总(含文档,数据集,代码等)(三)
- 媒体网关
- php中接口和抽象类的区别
- 获取文本框并修改其内容
- Android基础页面跳转3
- SubscriptionInfo框架分析
- 链接对象links
- [常用]按back键退出实现“再按一次退出”的功能两中方式
- 初学PHP
- all数组
- 翻转二叉树
- 判断回文
- Spring学习-20:Spring的AOP:自动代理
- 【python学习笔记】2:收集最多价值奖品问题