前言

现在的安卓机一般都支持双卡,一般都是使用两个运营商的号。我曾经遇到过这样一个需求,就是一个自动拨打电话的功能,判断手机号属于哪个运营商,就是对应的卡去拨打电话。那么问题来了,由于Google没有对应的API,拨号的时候只能使用默认的卡,网上搜寻一番还是找到了解决办法。

代码

首先定义一个常量

public static final String[] DUAL_SIM_TYPES = {"subscription",
            "Subscription",
            "com.android.phone.extra.slot",
            "phone",
            "com.android.phone.DialingMode",
            "simId",
            "simnum",
            "phone_type",
            "simSlot"};

拨号权限和其他权限的处理不多说,下面是拨号的逻辑

/**
* 拨打电话(拨号权限自行处理)
* @param phoneNum :目标手机号
* @param simIndex :sim卡的位置 0代表sim卡1,1代表sim卡2
*/
private void callPhone(String phoneNum,int simIndex) {
Intent callIntent = new Intent(Intent.ACTION_CALL).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callIntent.setData(Uri.parse(phoneNum));
for (String dualSimType : DUAL_SIM_TYPES) {
callIntent.putExtra(dualSimType, simIndex);
}
this.startActivity(callIntent);
}

这样就应该可以了,拿去测试吧...

如果觉得我的文章对你有用,请随意赞赏