本篇解决两个问题
* SIM卡询问框是如何弹出的?
* 通话中再添加通话为何不会再次弹出SIM卡询问框
PS:只考虑SIM卡账户的情况,不考虑有其他账户(sip等)的情况。
PPS:此现象仅针对QCOM某分支代码,AOSP是否如此未验证。
SIM卡询问框是如何弹出的?
SIM卡询问框弹出的条件
我们知道SIM卡是在SelecPhoneAccountDialogFragment.java中new出来并显示的,那么是如何走到这一步的呢?
跟踪拨打电话的流程我们知道在InCallActivity.java中的internalResolveIntent()方法中有一行
Call pendingAccountSelectionCall = CallList.getInstance().getWaitingForAccountCall();
这个pendingAccountSelectionCall 做什么的呢?
如果不为空的话,也即有一个PRI_DIAL_WAIT状态的call的话,就会调用SelectPhoneAccountDialogFragment.showAccountDialog()去显示一个选择框。
这里我们有一个疑问,我们还么有拨打出电话的时候为什么CallList里面就有Call了呢?
设置call的状态
如果你熟悉MO流程的话,那么你应该知道一个完整的MO流程是从dialer开始经telecom然后才到incallui的,而InCallActivity正是在InCallUI中的。因此我们推断,这个PRI_DIAL_WAIT的状态是在Telecomm中设置进去的。
经过跟踪流程发现,在CallsManager.j