現(xiàn)在很多手機(jī)都支持雙卡了裹刮,google原生音榜,當(dāng)我們插入雙卡且用戶未選擇默認(rèn)呼叫SIM卡的時(shí)候,用戶外呼電話捧弃,會(huì)彈出一個(gè)對(duì)話框赠叼,讓用戶可以選擇使用哪張SIM卡進(jìn)行呼叫。但是現(xiàn)在很多手機(jī)都會(huì)在這種情況下违霞,顯示兩個(gè)外呼按鈕嘴办,以供用戶選擇使用哪張SIM卡進(jìn)行呼叫,這樣的方式更加方便买鸽,直觀〗Ы迹現(xiàn)在我們可以看看實(shí)現(xiàn)思路。
Screenshot_20170704-173325.png
Screenshot_20170704-173309.png
我們可以在DialpadFragment的onCreateViewf方法中添加以下判斷癞谒,當(dāng)條件滿足的時(shí)候底燎,我們改變布局使得撥號(hào)盤顯示兩個(gè)撥號(hào)按鈕刃榨。
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){ //當(dāng)數(shù)目大于1双仍,且用戶未選擇外呼PhoneAccountHandle枢希,才顯示雙卡撥號(hào)按鈕
return true;
}else{
return false;
}
}
我們通過以下方法獲取運(yùn)營(yíng)商名稱:
List<PhoneAccountHandle> list = getTelecomManager().getCallCapablePhoneAccounts();
PhoneAccount phoneAccount = getTelecomManager().getPhoneAccount(list.get(0));
String label = phoneAccount .getLabel();
當(dāng)用戶進(jìn)行插拔sim卡的時(shí)候或者用戶設(shè)置默認(rèn)外呼SIM卡的時(shí)候,我們就要改變布局朱沃,使得撥號(hào)盤按鈕進(jìn)行相應(yīng)的改變苞轿,這時(shí)候我們可以注冊(cè)廣播,對(duì)TelecomManagerEx.ACTION_PHONE_ACCOUNT_CHANGED和TelecomManagerEx.ACTION_DEFAULT_ACCOUNT_CHANGED進(jìn)行監(jiān)聽逗物,對(duì)應(yīng)的代碼如下:
IntentFilter filter = new IntentFilter();
filter.addAction(TelecomManagerEx.ACTION_PHONE_ACCOUNT_CHANGED);
filter.addAction(TelecomManagerEx.ACTION_DEFAULT_ACCOUNT_CHANGED);
mContext.registerReceiver(mReceiver, filter);
在收到廣播的時(shí)候搬卒,我們調(diào)用isShowSelectPhone方法,之后進(jìn)行相對(duì)應(yīng)的變化翎卓。