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());

 

 

stk第4章 选择数据卡流程