stk第4章 选择数据卡流程
第4章 选择数据卡流程
1、在前文中我们提到了IccCardProxy在卡信息加载完毕后,会发送ACTION_INTERNAL_SIM_STATE_CHANGED广播。 SubscriptionInfoUpdater收到广播后,就会调用handleSimLoaded函数进行处理。
2、 SubscriptionInfoUpdater类,在handleSimLoaded函数中,主要工作将由updateSubscriptionInfoByIccId函数来承担。
updateSubscriptionInfoByIccId依次调用clearSubscriptionInfo和addSubscriptionInfoRecord函数完成实际的工作。
SubscriptionController.getInstance().clearSubInfo();
mSubscriptionManager.addSubscriptionInfoRecord(mIccId[i], i);
在该函数里面还判断插入的是第几张卡。
3、clearSubscriptionInfo主要用于清除slot Id和sub Id之间的关系。 毕竟在卡槽中重新插入一张卡后,sub Id可能发生了变化,因此需要先清理过去的缓存信息。
4、addSubscriptionInfoRecord函数调用SubscriptionManager的接口进行实际工作。SubscriptionManager首先将更新一些数据库字段, 设置一些卡界面显示所需要的信息,例如SIM卡在设置界面中的名称、颜色等。
然后,SubscriptionManager重新建立起Slot Id和Sub Id之间的映射关系。
最后,SubscriptionManager判断终端中只有一张卡时,开始设置数据、语音和短信使用的Sub Id等。
数据卡设置完毕后,SubscriptionManager将发送相应的广播信息。
5、此外,SubscriptionManager调用setDefaultDataSubId设置数据卡后,
还需要利用ProxyController的接口设置每个Phone对应的无线能力,即设置每张卡使用的协议栈。
mSubscriptionManager.setDefaultDataSubId( mSubscriptionManager.getDefaultDataSubscriptionId());