修改双卡拨号时,弹出的dialog选择SIM1、SIM2界面改为SIM卡的运营商名字

          前段时间, 一个外单项目的需要,查看了下这方面代码,修改的地方很小,主要通过TelephonyManager中类的getNetworkOperatorName()方法获得网络运营商名称

在Phone\src\com\android\phone\MsmsDialerActivity下面,找到protected Dialog onCreateDialog方法


修改前:

            

  Button[] callButton = new Button[mPhoneCount];
                int[] callMark = {
                        R.id.callmark1, R.id.callmark2
                };
                int[] subString = {
                        R.string.sub_1, R.string.sub_2        
                };
                boolean[] subActive = {
                        mSub1IsActive, mSub2IsActive
                };
                int index = 0;
                for (index = 0; index < mPhoneCount; index++) {
                    callButton[index] = (Button) layout.findViewById(callMark[index]);
                    callButton[index].setEnabled(subActive[index]);
                    callButton[index].setText(getString(subString[index]));        //sim1、sim2
                    callButton[index].setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            dismissDialog(CHOOSE_SIM_DIALOG);
                            switch (v.getId()) {
                                case R.id.callmark1:
                                    startOutgoingCall(MsmsConstants.SUB1, false);
                                    break;
                                case R.id.callmark2:
                                    startOutgoingCall(MsmsConstants.SUB2, false);
                                    break;
                            }
                        }
                    });
                }
                break;


修改后:

                Button[] callButton = new Button[mPhoneCount];
                int[] callMark = {
                        R.id.callmark1, R.id.callmark2
                };
                int[] subString = {
                        R.string.sub_1, R.string.sub_2
                };
                boolean[] subActive = {
                        mSub1IsActive, mSub2IsActive
                };
                int index = 0;
                for (index = 0; index < mPhoneCount; index++) {
                    callButton[index] = (Button) layout.findViewById(callMark[index]);
                    callButton[index].setEnabled(subActive[index]);

                       //start modify  by yang   2012-10-25 
//                    callButton[index].setText(getString(subString[index]));
                    
                    
                    {
                    TelephonyManager tm=(TelephonyManager)getBaseContext().getSystemService(
                    PhoneFactory.getServiceName(Context.TELEPHONY_SERVICE,index));
                    if (tm.hasIccCard()&&(tm.getNetworkOperatorName() != null)
                    && tm.getSimState()==TelephonyManager.SIM_STATE_READY){
                 
                    if(tm.getNetworkOperatorName().equals("")){
                    callButton[index].setText(com.android.internal.R.string.lockscreen_carrier_default);
                    }
                    else{
                    callButton[index].setText(tm.getNetworkOperatorName());
                    }
                    }
                    else{
                    callButton[index].setText(getString(subString[index]));
                    }
                    }                

         //end    modify                      
                    
                    callButton[index].setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            dismissDialog(CHOOSE_SIM_DIALOG);
                            switch (v.getId()) {
                                case R.id.callmark1:
                                    startOutgoingCall(MsmsConstants.SUB1, false);
                                    break;
                                case R.id.callmark2:
                                    startOutgoingCall(MsmsConstants.SUB2, false);
                                    break;
                            }
                        }
                    });
                }
                break;

  

        有兴趣的可以试下                 

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ADB (Android Debug Bridge) 是一个强大的工具,用于管理和调试 Android 设备或模拟器。当你需要在 Android 设备上进行拨打电话的操作,通常会涉及到模拟电话拨打或发送 SMS,这在某些情况下可能用于测试应用的功能或者自动化测试。 在ADB中,你可以使用 `adb shell` 命令进入设备的shell环境,然后使用特定的命令来模拟拨号操作。这个过程通常涉及到调用系统的打电话接口,例如 `dial` 或 `telcom` 命令。具体步骤如下: 1. **连接设备**:确保你的电脑已连接到设备,并安装了ADB驱动。使用 `adb devices` 命令检查设备是否被识别。 2. **进入shell**:输入 `adb shell` 进入设备的shell环境。 3. **拨号操作**:在shell里,你可以使用 `dial number` 来拨打电话,其中 `number` 是你要拨打的电话号码,例如: ```bash am start -a android.intent.action.DIAL --es number "+1234567890" ``` 或者直接调用拨号应用: ```bash am start -n com.android.contacts/.DialtactsActivity ``` 4. **选择SIM**:如果你的设备有多张SIM,可以通过指定网络类型(如通过 `--network-type` 参数)来选择特定的,但在很多情况下,ADB默认会使用第一个可用的网络。 请注意,模拟拨打电话可能需要设备的开发者权限,并且并非所有设备都支持所有选项。在实际操作之前,建议查阅设备的文档或进行安全测试,以确保不会对设备造成意外影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值