显示通话中拨号盘 - 在通话期间拨打号码 - DTMF

时间:2012-04-12 21:30:37

标签: java android android-intent 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

1 个答案:

答案 0 :(得分:0)

不。它不是tel:触发一个新的调用,而是你正在创建一个新的Intent,然后运行startActivity(dial);

想想这意味着什么:您正在开始一项全新的活动,因此无法与之前代码使用的与手机相关的活动进行互动。

我认为你真正要做的就是添加一个数字,然后结束你拨打的内容。为此,您需要将整个数字加上URI数据中的暂停字符(p),并使用ACTION_CALL。代码:

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

我做了三次停顿,你应该根据需要多长时间进行调整。或者,使用等待字符(w),但这似乎需要用户确认发送额外的数字。

相关问题