[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());