海双卡双待手机[海信]挂断来电和指定卡去电实现的技术调研信双卡手机拨打电话时,在启动拨打电话时,传递一个参数给系统,这样系统的可以根据该参数判断使用指定的卡:
Intent i = new Intent();
i.setAction(Intent.ACTION_CALL);
i.setData(Uri.parse("tel:" + address));
i.putExtra("subscription", type);// subscription 是名称,不可改变. type :1为gsm卡|0为电信卡
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
海信手机在挂断电话时,使用反射方法,获取endcall(int) 参数来挂断电话,
try {
TelephonyManager mTelephyMgr = (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE);
Method getITelephonyMethod = mTelephyMgr.getClass().getDeclaredMethod("getITelephonyMSim");
getITelephonyMethod.setAccessible(true);
Object objITelephonyMSim = getITelephonyMethod.invoke(mTelephyMgr);
Method intEndCall = objITelephonyMSim.getClass().getMethod("endCall", int.class);
intEndCall.invoke(objITelephonyMSim, 1);//可挂断主/副卡来电(挂断当前来电)
// intEndCall.invoke(objITelephonyMSim, 0);//只能挂断副卡来电
AVLog.d("block", "block the incoming call");
} catch (Exception e) {
e.printStackTrace();
}
上面代码中之所以没有将注视的代码去掉是因为,经测试当endcall方法参数为1时,可以挂断主卡和副卡来电,参数为0时,只能挂断副卡来电.那么
intEndCall.invoke(objITelephonyMSim, 1);
以上一句话就是可以挂断两个卡的来电了. 移植项目中测试发现.打进电话测试: 广播接收到"android.intent.action.PHONE_STATE"这个action ,监听到此广播,再判断来电状态
TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
int callState = tm.getCallState();//获取来电时状态
主卡来电时,上面代码通过,但是在副卡来电获取callState状态时,callState状态是0(PHONE_IDLE =0 电话挂断状态,PHONE_RINGRING = 1是响铃状态).那么继续猜测,副卡来电时,android系统的api方法getCallState()是不能获取副卡的来电状态的,这需要使用反射方法获取主卡和副卡的状态,只要有来电,一定有一个卡的callstate是PHONE_RINGRING状态,代码如下
Method getITelephonyMethod = mTelephyMgr.getClass().getDeclaredMethod("getITelephonyMSim");
getITelephonyMethod.setAccessible(true);
Object objITelephonyMSim = getITelephonyMethod.invoke(mTelephyMgr);
Method intEndCall = objITelephonyMSim.getClass().getMethod("getCallState", int.class);
int state1 = (Integer) intEndCall.invoke(objITelephonyMSim, 0);//主卡状态
int state2 = (Integer)intEndCall.invoke(objITelephonyMSim, 1);//副卡状态
if (state1 == 1 || state2 ==1) {
//来电话了,执行拒接逻辑
}
分享到:
相关推荐
HX194E-9SY 海信电子电力仪表说明书,内含MODBUS RTU 协议,寄存器地址
海信E350手机拨号上网操作方法,详细方法见文档
刷机是我们的必备能力,海信手机简易刷机可以提供一种思路
该系列产品是一种具有可编程测量、显示、数字通讯和电能脉冲输出等多功能智能仪表,能够完成电量测量、电能计量、数据显示、采集及传输,可广泛...实现LCD现场显示和远程RS-485数字接口通讯,采用MODBUS-RTU通讯协议。
官方驱动,使用于所有海信E8手机,包含usb驱动,上网驱动,摄像头驱动
刷机包是楼主自己买的,现在分享出来给大家,目前存在的问题是关机后遥控不能开机,其他正常,卡制好后关机插卡,捅屁眼开机,自动进入升级
海信 c558 手机 驱动 及 工具 海信 c558 手机 驱动 及 工具
海信 驱动 usb pc端 HisensePhoneUSBDriver
海信E6 手机刷机软件。解决开机白屏或者开机后没有文字的故障。有需要者可加Q3801-2554. 找了好多天才找到的软件。
20210416-申万宏源-海信家电-000921-综合白电领军企业,混改落地加速释放经营活力.pdf
海信液晶TLM3233H系列(1032板)电视机电源电路原理图
海信T96 root权限获取 海信T96一键root教程 工具包
手机小秘书和驱动集合包, 手机小秘书和驱动集合包 手机小秘书和驱动集合包 手机小秘书和驱动集合包
安卓手机 海信EG906 开启移动上网(G)(开始只能C电信上网 安装之后可以开启移动上网)
官方E522.6.04.06.00版本 手机root后用re管理器直接替换了system/framework里面的framework-res.apk 然后就ok了,(权限第一列是1 2 ,第二列是1 第三列是1)
海信电视和电脑的无线传屏技术 海信电视和电脑的无线传屏技术
海信财务报表
海信HS-T830手机驱动,刷机必备,下载后解压安装。
海信e910驱动是一款连接手机与电脑的usb驱动软件,让你能够顺利的实现刷机包成功刷机效果,为你带来不错的连接效果,快下载吧!特色介绍海信e910驱动,是从官方直接下载的,能够帮助用户正常连接手机与电脑同步资料...
想要获取海信ET919等手机ROOT权限吗? 拿到新机,总有不少系统定制的软件。无用,还删不了。 这时只有ROOT了。就是获取最高权限。安卓2.3.3以上版本我试了很多方法。终于还是成功破解。 不多说,首先在电脑上装上...