2011-05-17 94 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