美文网首页
拨号盘单双卡切换显示

拨号盘单双卡切换显示

作者: 嚣张鱼 | 来源:发表于2017-07-04 17:54 被阅读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方法,之后进行相对应的变化。

    相关文章

      网友评论

          本文标题:拨号盘单双卡切换显示

          本文链接:https://www.haomeiwen.com/subject/cxexhxtx.html