拨号盘单双卡切换显示

2017-07-04  本文已影响0人  嚣张鱼

现在很多手机都支持双卡了,google原生,当我们插入双卡且用户未选择默认呼叫SIM卡的时候,用户外呼电话,会弹出一个对话框,让用户可以选择使用哪张SIM卡进行呼叫。但是现在很多手机都会在这种情况下,显示两个外呼按钮,以供用户选择使用哪张SIM卡进行呼叫,这样的方式更加方便,直观。现在我们可以看看实现思路。


Screenshot_20170704-173325.png
Screenshot_20170704-173309.png

我们可以在DialpadFragment的onCreateViewf方法中添加以下判断,当条件满足的时候,我们改变布局使得拨号盘显示两个拨号按钮。

private boolean isShowSelectPhone(){
        int count = getTelecomManager().getCallCapablePhoneAccounts().size();   //获取能打电话的PhoneAccount数目。
        Log.d(TAG,"getSimState count:"+count);
        PhoneAccountHandle phoneAccountHandle = getTelecomManager().getUserSelectedOutgoingPhoneAccount();      //获取用户选择的外呼PhoneAccountHandle
        if(count > 1 && phoneAccountHandle == null){       //当数目大于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进行监听,对应的代码如下:

IntentFilter filter = new IntentFilter();
filter.addAction(TelecomManagerEx.ACTION_PHONE_ACCOUNT_CHANGED);
filter.addAction(TelecomManagerEx.ACTION_DEFAULT_ACCOUNT_CHANGED);
mContext.registerReceiver(mReceiver, filter);

在收到广播的时候,我们调用isShowSelectPhone方法,之后进行相对应的变化。

上一篇下一篇

猜你喜欢

热点阅读