2011-05-17 60 views
1

我有一个应用程序需要检查是否存在来自特定联系人的正在进行的呼叫。无法使用ACTION_PHONE_STATE_CHANGED获取当前主叫方电话号码

我知道我可以使用ACTION_PHONE_STATE_CHANGED广播意图在CALL_STATE_RINGING获得主叫电话号码,但我想要做的就是使用TelephonyManager.getCallState功能,万一有有效呼叫(CALL_STATE_RINGING或CALL_STATE_OFFHOOK),以获取来电者的电话号码。

任何想法?

回答

2

因此,深入研究之后,我现在肯定有它没有简单的方法...

我最后做的是听ACTION_PHONE_STATE_CHANGED和NEW_OUTGOING_CALL广播意图,当我收到他们,注册一个粘性广播(我创建的),它包含一个额外的电话号码和一个指示是否有来电或去电。当我用CALL_STATE_IDLE得到一个ACTION_PHONE_STATE_CHANGED时,我删除了那个粘性意图)。

现在当我需要知道是否有一个活动的电话,我试着让那个粘性广播(registerReciever与空接收器),如果有粘性可用,我可以得到电话号码和一个传入/去电。

一两件事,仍然可以改进为更好地处理等待的电话,因为ACTION_PHONE_STATE_CHANGED将在通话过程中可以接收,我不能说这是积极的(see related question