获取当前来电号码而不使用ACTION_PHONE_STATE_CHANGED

时间:2011-05-17 15:10:38

标签: android call phone-number telephonymanager

我有一个应用程序需要检查是否有来自特定联系人的正在进行的呼叫。

我知道我可以使用ACTION_PHONE_STATE_CHANGED广播意图来获取CALL_STATE_RINGING的主叫电话号码,但我想要做的是使用TelephonyManager.getCallState函数以及是否存在活动呼叫(CALL_STATE_RINGING或CALL_STATE_OFFHOOK ),获取来电号码。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

所以,经过进一步研究,我现在确定没有简单的方法......

我最终完成的是收听ACTION_PHONE_STATE_CHANGED和NEW_OUTGOING_CALL广播意图,当我收到它们时,注册一个粘性广播(我创建的广播),其中包含一个带有电话号码的附加信息以及是否有来电或去电。当我获得带有CALL_STATE_IDLE的ACTION_PHONE_STATE_CHANGED时,我删除了该粘性意图。

现在,当我需要知道是否有活动呼叫时,我尝试获取粘性广播(带有空接收器的registerReciever),如果有可用粘性,我可以获取电话号码并指示传入/传出调用

仍然可以改进的一件事是更好地处理等待的呼叫,因为在活动呼叫期间将收到ACTION_PHONE_STATE_CHANGED并且我不能说哪个是活动的(see related question