显示通话键盘 - 通话过程中拨打号码 - DTMF

9
我想在接听电话后拨打一个号码,通常通过通话中的拨号键盘完成。
我尝试了以下操作,但这会开始拨打一个新电话(ACTION_VIEW 也是如此)。
Intent dial = new Intent(Intent.ACTION_DIAL);
dial.setData(Uri.parse("tel:9"));
startActivity(dial);

我的猜测是"tel:"会触发新的拨号序列。我可能需要显示通话中的拨号键盘并模拟按键操作。 有人知道吗? 编辑: 我找到了这个问题 Starting the InCallScreen activity 这让我想到我只需要向'com.android.phone.InCallScreen'发送一个按键事件,但我不确定如何做到这一点。 此外,这是一个直接相关的问题,已经(仍然是)开放多年: http://code.google.com/p/android/issues/detail?id=1428

据我所知,公共API中没有这个功能。曾经有一些提议的更改可以允许这样做,但它们似乎已经停滞不前了。 - caseyburkhardt
1个回答

0

不对。并不是tel:触发了新的呼叫,而是因为您正在创建一个新的Intent,然后运行startActivity(dial)。

想想这意味着什么:您正在启动一个全新的活动,因此它无法与您先前的代码使用的与电话相关的活动进行交互。

我认为您真正想要做的是在拨打号码的末尾添加一个号码。要实现这一点,您需要将整个号码加上暂停字符(p)放入URI数据中,并使用ACTION_CALL。代码:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接