【问题标题】:getting the current caller phone number WITHOUT using ACTION_PHONE_STATE_CHANGED在不使用 ACTION_PHONE_STATE_CHANGED 的情况下获取当前呼叫者电话号码
【发布时间】:2011-05-17 15:10:38
【问题描述】:
我有一个应用程序需要检查是否有来自特定联系人的通话。
我知道我可以使用 ACTION_PHONE_STATE_CHANGED 广播意图在 CALL_STATE_RINGING 获取主叫电话号码,但我想做的是使用 TelephonyManager.getCallState 函数,以防有活动呼叫(CALL_STATE_RINGING 或 CALL_STATE_OFFHOOK ),获取来电者电话号码。
有什么想法吗?
【问题讨论】:
标签:
android
call
phone-number
telephonymanager
【解决方案1】:
所以,经过进一步调查,我现在确定没有简单的方法......
我最后做的是收听 ACTION_PHONE_STATE_CHANGED 和 NEW_OUTGOING_CALL 广播意图,当我收到它们时,注册一个粘性广播(我创建的一个),其中包含一个带有电话号码的额外信息,并指示它是来电还是去电.当我收到带有 CALL_STATE_IDLE 的 ACTION_PHONE_STATE_CHANGED 时,我删除了这种粘性意图)。
现在,当我需要知道是否有活动通话时,我会尝试获取该粘性广播(registerReciever 接收器为空),如果有粘性可用,我可以获得电话号码和传入/传出的指示打电话。
仍然可以改进的一点是更好地处理等待呼叫,因为 ACTION_PHONE_STATE_CHANGED 将在活动呼叫期间收到,我不能说哪个是活动的 (see related question)