Android 5.1以上双卡指定sim卡拨打电话
直接上代码:
/*** 指定sim卡拨打电话** @param phoneNumber* @param slotId 0:卡1 1:卡2*/public void callPhone(String phoneNumber, int slotId) {LogUtil.d(TAG, "call phone : phoneNumber=" + phoneNumber + ", slotId=" + slotId);PhoneAccountHandle phoneAccountHandle = getPhoneAccountHandle(slotId);Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(intent);}
/**这一块首先获取手机中所有sim卡 PhoneAccountHandle 每一个 PhoneAccountHandle 表示一个sim卡, 然后根据 slotId 判断所指定的sim卡并返回此 PhoneAccountHandle (这里5.1 和 6.0需要区分对待)
*/
@Target Api(Build.VERSION_CODES.M)private PhoneAccountHandle getPhoneAccountHandle(int slotId) {TelecomManager tm = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);//PhoneAccountHandle api>5.1if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {List<PhoneAccountHandle> handles = (List<PhoneAccountHandle>) ReflectUtil.invokeMethod(tm, "getCallCapablePhoneAccounts");SubscriptionManager sm = SubscriptionManager.from(mContext);if (handles != null) {for (PhoneAccountHandle handle : handles) {SubscriptionInfo info = sm.getActiveSubscriptionInfoForSimSlotIndex(slotId);if (info != null) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (TextUtils.equals(info.getIccId(), handle.getId())) {LogUtil.d(TAG, "getPhoneAccountHandle for slot" + slotId + " " + handle);return handle;}} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {if (TextUtils.equals(info.getSubscriptionId() + "", handle.getId())) {LogUtil.d(TAG, "getPhoneAccountHandle for slot" + slotId + " " + handle);return handle;}}}}}}return null;}
以上就是指定sim卡拨打的全部代码, 不擅长写博客, 希望对有需要的童鞋有所帮助.
Android 5.1以上双卡指定sim卡拨打电话相关推荐
- Android指定sim卡拨打电话
1:申请权限 Manifest.permission.CALL_PHONE 2:创建intent Intent intent = new Intent(Intent.ACTION_CALL);inte ...
- 84.android 简单的(双卡手机)指定某个SIM卡拨打电话
//第一步 权限: <uses-permission android:name="android.permission.CALL_PHONE" /> //Activit ...
- 关于android双卡手机sim卡信息采集适配的心得
关于android双卡手机sim卡信息采集适配的心得 这几天通过对各个厂商的双卡信息适配的研究,总结了几点规律,写这篇心得主要是为了能够抛砖引玉,和大家一起分享,一起讨论,源码已上传. 一.andro ...
- android 短信数据库 双卡,关于android双卡手机sim卡信息采集适配的心得
这几天通过对各个厂商的双卡信息适配的研究,总结了几点规律,写这篇心得主要是为了能够抛砖引玉,和大家一起分享,一起讨论,源码已上传. 一.android5.0以上(包含5.0)的版本双卡信息适配: 1. ...
- Android kotlin 代码设置短信指定SIM卡发送
Android kotlin 代码设置短信指定SIM卡发送 前言 逻辑 权限 获取全部手机卡信息 修改短信使用的卡 发送短信 完事 前言 在双卡双待,甚至多卡多待的Android设备中,实现调用自己想 ...
- Android 9.0 去除锁屏界面及SystemUI无sim卡拨打紧急电话控件显示功能实现
1.1概述 在9.0的系统rom定制化开发中,关于SystemUI的定制化功能也是比较多的,在SystemUI的锁屏页面和状态栏提示无sim卡拨打紧急电话控件显示等相关提示 的功能中,在有些syste ...
- Android入门篇(四):自动拨打电话、手动拨打电话
Android入门篇(四):自动拨打电话.手动拨打电话 一.前言 最近在做的项目需要用到自动拨号的这一功能,17年写了一个,最近拿出来用发现不能使用了,后面查资料据说是因为Android 6(api2 ...
- android指定sim卡拨号,使用双SIM卡设备中的指定SIM拨打电话
过去几天我一直在寻找这个,我开始知道: "开箱即用的Android不支持双SIM卡.这是制造商的自定义修改,并且没有公共API来控制它." 下面的链接提供了一个解决方案,但它不能在 ...
- android指定sim卡拨号,android – 在双SIM卡设备中使用指定的SIM拨打电话
过去几天我一直在寻找这个,我开始知道: "开箱即用的Android不支持双SIM卡.这是制造商的自定义修改,并且没有公共API来控制它." 下面的链接提供了一个解决方案,但它不能在 ...
最新文章
- SAP Link Between Material Document and Accounting Document Table
- 学习 jQuery UI
- mysql 视图 教程_MySQL VIEW(视图)
- VC++ 使用预编译头
- 用Scikit-learn和TensorFlow进行机器学习(二)
- ORACLE基础学习-RMAN应用-控制文件恢复
- python创建新进程_Python os.fork()方法:创建新进程
- jasperreport linux 中文不能显示的解决方法
- mongodb空间查询java,java查看mongodb集合表空间大小
- 关于kinect的一些想法
- 基于OpenCV的计算机视觉入门(5)图像美化(上)
- iOS 中的正则匹配(工具类方法)
- Facebook采取赤裸裸抄袭的战略 争夺用户
- PHP+Swoole实现的网页即时聊天通讯工具:PHPWebIM
- appium环境搭建android版,【appium】自动化测试appium教程(环境搭建上)
- SpringBoot和Hprose集成开发
- 使用 KubeSphere 和极狐GitLab 打造云原生持续交付系统
- 10月9日模拟题解题报告
- Python Platform 平台信息
- 高一计算机算法教案,高一信息技术第六章“第一节程序设计的基本方法”教案设计...