1

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

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

有任何想法吗 ?

4

1 回答 1

2

所以,在进一步调查之后,我现在确定没有简单的方法......

我最后做的是收听 ACTION_PHONE_STATE_CHANGED 和 NEW_OUTGOING_CALL 广播意图,当我收到它们时,注册一个粘性广播(我创建的一个),其中包含一个带有电话号码的额外信息,并指示它是来电还是去电。当我收到带有 CALL_STATE_IDLE 的 ACTION_PHONE_STATE_CHANGED 时,我删除了这种粘性意图)。

现在,当我需要知道是否有活动呼叫时,我会尝试获取该粘性广播(带有空接收器的 registerReciever),如果有可用的粘性,我可以获得电话号码和来电/去电的指示。

仍然可以改进的一件事是更好地处理等待呼叫,因为 ACTION_PHONE_STATE_CHANGED 将在活动呼叫期间收到,我不能说哪个是活动的(请参阅相关问题

于 2011-05-19T04:05:35.660 回答