FAQ02963]如何拦截来电,即在电话ring之前就有机会检查来电号码?

来源:互联网 发布:python处理文本文件 编辑:程序博客网 时间:2024/04/28 07:22

[Android Version]

Android V2.3 (GB,GB2,GB3)

Android V4.0, 4.1,4.2(ICS,ICS2,JB,JB2,JB3,JB5)

Android V4.4及之后版本

[DESCRIPTION]

在电话ring之前检查来电号码。

[SOLUTION]

 

**L0及L1

在frameworks\opt\telephony\src\java\com\android\internal\telephony\gsm\GsmCallTrackerHelper.java文件的方法CallIndicationProcess 里做Phone number的检查,如果需要拦截,将方法里mode处理为1即可。

 

**L之前的版本

 

第一种方法:

可以在CallNotifier.java的onNewRingingConnection中拦截。
根据需要从    
Connection c = (Connection) r.result;  

中来电连接中分析来电数据,从而判定是否要拦截。

第二种方法:

GsmCallTraker.java下的

handleIncomingCallIndication函数中,获取EAIC上报时的number;

如果需要在此处拦截,将incoming call hangup,需要使得modem不上报之后的ring,否则会导致电话挂断时,界面仍然有incoming call的情况;

可以用如下方法,来使得在收到EAIC上报时,hangup incoming call后,modem不再上报ring:

在hangup前,调用cm.setCallIndication(1, callId, seqNumber, obtainCompleteMessage());

0 0