2012-01-20 34 views
2

我可以使用這個代碼,以使呼出:Android:連接電話時檢測到電話?

Intent dial = new Intent(Intent.ACTION_CALL); 
dial.setData(Uri.parse("tel:5556")); 
context.startActivity(dial); 

但是,如何檢測呼叫是否撿到或呼叫被拒絕? 我試過PhoneStateListener,但它不工作。

回答

-1
+1

您好,我問的是撥出電話,您提供的鏈接用於來電。 –

+0

@PattabiRaman不是真的,你真的讀過第二個鏈接嗎?我引用:當電話掛斷時(由於成功/失敗),我的應用程序應該知道這個以及hangup_ –

+0

的原因。這些鏈接不提供關於呼叫是否連接的信息。它提供的所有功能都是檢測閒置和掛斷。 – AndroidDev

1

不幸的是,Android爲沒有意思,知道什麼時候出局呼叫已被應答。

PhoneStateListener工作正常,但3個狀態的onCallStateChanged通知是不夠的。像CALL_STATE_CONNECTED這樣的額外狀態將會受到歡迎。

有請求此功能的開放問題,但它並沒有得到太多的關注,到目前爲止: https://code.google.com/p/android/issues/detail?id=14266

有些人(比如我)回退到使用logcat的,並試圖推斷如果呼出已回答但這遠非理想的解決方案。

+0

+1,因爲呼叫狀態ACTIVE實際上被OS記錄到一般設備的logcat (至少在我的三星S5)。這節省了我的一天! :) – Kozuch

0

我也在尋找答案同樣的問題,顯然沒有直接的方法是目前做到這一點。但是,我認爲我們可以將Call Log內容觀察器與PhoneStateListener結合起來,以獲得通話持續時間。 我們可以在共享的首選項時,撥出電話開始設置一個標誌,如果在通話記錄中的任何變化和我們共同的首選項標誌是真的,我們可以得到從通話記錄通話時間,看看通話是有史以來連接:)