2012-04-12 108 views
8

我希望在通過電話撥號盤接聽電話後撥打號碼。顯示通話中撥號盤 - 在通話過程中撥打號碼 - DTMF

我嘗試了以下,但開始撥打新的呼叫,而不是(ACTION_VIEW)。

Intent dial = new Intent(Intent.ACTION_DIAL); 
dial.setData(Uri.parse("tel:9")); 
startActivity(dial); 

我的猜測是「tel:」觸發一個新的撥號序列。我可能需要的是顯示通話撥號盤並模擬按鍵。

有人嗎?

編輯: 我發現這個問題 Starting the InCallScreen activity 這讓我覺得我只是需要發送keydown事件爲「com.android.phone.InCallScreen」,但我不知道該怎麼做。 此外,這是一個直接相關的問題,已經(並且仍然)多年開放: http://code.google.com/p/android/issues/detail?id=1428

+0

據我所知,公共API中沒有這個功能。 TelephonyManager有一些[建議的更改](https://groups.google.com/forum/#!msg/android-contrib/4QqHgLOrBO8/xXl9221pv-kJ),但它們似乎已停滯。 – caseyburkhardt 2012-12-01 03:21:09

回答

0

沒有。它不是tel:觸發一個新的調用,而是你創建一個新的Intent,然後運行startActivity(撥號)的事實;

想想這是什麼意思:你正在開始一個全新的活動,所以它不能與你之前的代碼使用的與電話相關的活動進行交互。

我認爲你真正想要做的是添加一個數字,然後結束你所撥的。要做到這一點,你需要把你的整個號碼加上一個暫停字符(p)在URI數據中,然後使用ACTION_CALL。代碼:

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

我做了三次暫停,您應該根據需要多長時間進行調整。或者,使用等待字符(w),但這似乎需要用戶確認才能發送額外的數字。