【android开发】【通信】设置默认拨号sim1/sim2

设置默认拨号sim1/sim2

1. 需求分析

自动化测试过程中需要拨打电话,仅仅只是电话就好。
但双卡情况下会有弹窗,让用户选择哪个sim卡拨号,所以需要接口去设置默认拨号为sim1或sim2,就么有弹窗了。

图示如下:
在这里插入图片描述

2. 原理解析

因为要有UI的变化,所以我们从系统framework源码中去找.
找到这个接口 :

setUserSelectedOutgoingPhoneAccount()

源码展示
slotID就是卡槽ID, 卡槽1=0,卡槽2=1
subscription 为卡槽上注册的信息,就是sim卡信息

3. 实现代码

代码简写如下:

//导入包
import telecomMnager, telephonyManager, subScriptionManager
import subscriptionInfo


/**
*  slot id, 0=sim1, 1=sim2
*/
public static boolean setDefaultSimCardForCall(int slotid){
	if( !(slotid==0 || slotid==1) )   return false;   //参数合法验证
	//获取相关servie
	SubscriptionManager sm = Context.getContext().getSystemService(SubscriptionManager.class);
	TelephonyManager tym = Context.getContext().getSystemService(TelephonyManager .class);
	TelecomManager tcm = Context.getContext().getSystemService(TelecomManager.class);
	// service对象须判空
	SubscriptionInfo si = sm.getActiveSubscriptionInfoForSimSlotIndex(slotid);
	int subid = si.getSubscriptionId();
	for(PhoneAccountHandle pah : tcm.getCallCapablePhoneAccounts()) {
		if(subid == tym.getSubIdForPhoneAccount(tcm.getPhoneAccount(pah))) {
			log("got it");
			tcm.setUserSelectedOutgoingPhoneAccount(pah);  //设置默认
			return true;
		}
	}
	return false;
}



在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

–有任何疑问可留言讨论或发邮件给我timyhao@126.com, 谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值