現(xiàn)在很多手機都支持雙卡了,google原生,當我們插入雙卡且用戶未選擇默認呼叫SIM卡的時候,用戶外呼電話,會彈出一個對話框,讓用戶可以選擇使用哪張SIM卡進行呼叫。但是現(xiàn)在很多手機都會在這種情況下,顯示兩個外呼按鈕,以供用戶選擇使用哪張SIM卡進行呼叫,這樣的方式更加方便,直觀?,F(xiàn)在我們可以看看實現(xiàn)思路。

Screenshot_20170704-173325.png

Screenshot_20170704-173309.png
我們可以在DialpadFragment的onCreateViewf方法中添加以下判斷,當條件滿足的時候,我們改變布局使得撥號盤顯示兩個撥號按鈕。
private boolean isShowSelectPhone(){
int count = getTelecomManager().getCallCapablePhoneAccounts().size(); //獲取能打電話的PhoneAccount數(shù)目。
Log.d(TAG,"getSimState count:"+count);
PhoneAccountHandle phoneAccountHandle = getTelecomManager().getUserSelectedOutgoingPhoneAccount(); //獲取用戶選擇的外呼PhoneAccountHandle
if(count > 1 && phoneAccountHandle == null){ //當數(shù)目大于1,且用戶未選擇外呼PhoneAccountHandle,才顯示雙卡撥號按鈕
return true;
}else{
return false;
}
}
我們通過以下方法獲取運營商名稱:
List<PhoneAccountHandle> list = getTelecomManager().getCallCapablePhoneAccounts();
PhoneAccount phoneAccount = getTelecomManager().getPhoneAccount(list.get(0));
String label = phoneAccount .getLabel();
當用戶進行插拔sim卡的時候或者用戶設置默認外呼SIM卡的時候,我們就要改變布局,使得撥號盤按鈕進行相應的改變,這時候我們可以注冊廣播,對TelecomManagerEx.ACTION_PHONE_ACCOUNT_CHANGED和TelecomManagerEx.ACTION_DEFAULT_ACCOUNT_CHANGED進行監(jiān)聽,對應的代碼如下:
IntentFilter filter = new IntentFilter();
filter.addAction(TelecomManagerEx.ACTION_PHONE_ACCOUNT_CHANGED);
filter.addAction(TelecomManagerEx.ACTION_DEFAULT_ACCOUNT_CHANGED);
mContext.registerReceiver(mReceiver, filter);
在收到廣播的時候,我們調用isShowSelectPhone方法,之后進行相對應的變化。