拨号盘单双卡切换显示

现在很多手机都支持双卡了,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方法,之后进行相对应的变化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转 1SIM卡编号SIM卡背面的20位数字所代表的含义如下:前6位(898600):中国的代号;第7位:业务接入号...
    xjbclz阅读 2,259评论 0 0
  • Android5.0开始支持双卡了。另外,对于双卡的卡信息的管理,也有了实现,尽管还不是完全彻底完整,如卡的slo...
    rayxiang阅读 1,150评论 0 0
  • 6 跟踪用户动作 在上一章中,你用jQuery实现了AJAX视图,并构建了一个分享其它网站内容的JavaScrip...
    lakerszhy阅读 1,256评论 0 1
  • 转 文件 文件标识符 文件缩写 中文名称 文件作用 MF 3F00 根目录 备注:所有非ETSIGSM协议中规定的...
    xjbclz阅读 1,440评论 0 0
  • 2012年9月1日,今天宝贝报名去上学了.一天的担心,在家里那么皮的,不知道在学校能呆得住么?第一次远离亲人,第一...
    清扬hq阅读 141评论 0 1