Android 来电呼叫转移功能

Google Earth View

这篇其实不算技术博客,简单记录下关于来电转移的使用。

00 呼叫转移的类型

呼叫转移其实是一个比较常见的功能了,当你在开发一个使用电话场景的业务比较多的 app 的时候,难免会遇到需要使用呼叫转移功能的需求,这样当使用你 app 的用户(公司员工)无法立即接听或者处于忙碌状态的时候,如果有个一键呼叫转移的功能那是不是很方便呢?

经过一番搜索,不同移动网络对呼叫转移的支持也有区别,大致分为两种,C 网与 G 网,C 网是指 CDMA 网,G 网是指 GSM 网。其实就是两种不同的网络通信方式,维基百科的解释看不太懂,后来还是看了这个百度知道的回答后才稍微明白了一点(好吧,百度知道也不全是垃圾😂):

C网是CDMA频段:CDMA 1X:CDMA 1X采用扩频速率为SR1,即指前向信道和反向信道均用码片速率 1.2288Mbit/s的单载波直接系列扩频方式。因此它可以方便地与IS-95(A/B)后向兼容,实现平滑 过渡。由于CDMA 1X采用了反向相干解调、快速前向功控、发送分集、Turbo编码等新技术,其容量比 IS-95大为提高。在相同条件下,对普通话音业务而言,容量大致为IS-95系统的两倍。CDMA 1X网络 可以作为话音业务的承载平台,也可以作为无线接入Internet分组数据承载平台,既可以为用户提 供传统的话音业务,也可以为用户提供端对端分组传输模式的数据业务。

CDMA网络是由联通统一建设和运营,这一独家运营权所能带来的市场空间也是很明显的。有了 CDMA网的支持,联通可以实现许多新的增值数据业务,由此可能会赢得更多CDMA用户。

G网是GSM数字网:GSM:GSM(Global System For Mobile Communication)网即全球移动通信系统,又称 “全球通”,很多公司参与了标准的制定工作。GSM数字移动通信系统是由欧洲主要电信运营者和 制造厂家组成的标准化委员会设计出来的,它是在蜂窝系统的基础上发展而成。

GSM采用的是数字调制技术,其关键技术之一是时分多址(每个用户在某一时隙上选用载频且只能在特 定时间下收信息),GSM系统有几项重要特点:防盗拷能力佳、网络容量大、号码资源丰富、通话清晰、 稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量底等。因此其话音清晰,保密容易,能提 供的数据传输服务较多。GSM网能支持的用户数量为模拟网的1.8-2倍。

目前来看,中国电信使用的网络制式中同时包含了C网与G网(大部分是C网),中国移动与中国联通大多使用G网。

01 C网和G网设置呼叫转移的规则

经过多番搜索,整理出下面两张表格。

C网(适用中国电信)

类型 启用 取消
无条件呼叫转移 *72[电话号码]+拨打键 *720+拨打键
遇忙呼叫转移 *90[电话号码]+拨打键 *900+拨打键
无信号/关机/无应答呼叫转移 *92[电话号码]+拨打键 *920+拨打键
取消所有呼叫转移 *730+拨打键

参考:中国电信呼叫转移业务介绍

G网(适用中国移动与中国联通)

类型 启用 取消 状态查询
无条件呼叫转移 **21*[电话号码]#+拨打键 ##21#+拨打键 *#21#+拨打键
遇忙呼叫转移 **67*[电话号码]#+拨打键 ##67#+拨打键 *#67#+拨打键
无信号/关机呼叫转移 **62*[电话号码]#+拨打键 ##62#+拨打键 *#62#+拨打键
无应答呼叫转移 **61*[电话号码]#+拨打键 ##61#+拨打键 *#61#+拨打键
取消所有呼叫转移 ##002#+拨打键

参考:中国移动呼叫转移设置使用 & 呼叫转移的命令代码

02 发起呼叫转移

知道上述规则之后,其实发起呼叫转移就很简单了,首先保证你的应用已经声明了打电话的权限,然后只要发起 Intent.ACTION_CALL 的 Intent 就可以了。

1
2
3
4
5
6
public static void callForward(Context context, String forwardNumber) {
Intent dialIntent = new Intent(Intent.ACTION_CALL,
Uri.parse(String.format("tel:%s", forwardNumber)));
dialIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(dialIntent);
}

其实这里可以结合我的上一篇文章做一点优化,对呼出的号码进行过滤,如果包含呼叫转移的前缀则对呼叫转移的类型进行判断并提示信息。具体请看:安卓代替系统默认电话应用(Android 6.0+)与电话状态监听

祝各位周末愉快!