9

我想在接听电话后拨打一个号码,通常由通话拨号盘完成。

我尝试了以下方法,但它开始拨打新电话(ACTION_VIEW 也是如此)。

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

我的猜测是“tel:”会触发一个新的拨号序列。我可能需要的是显示通话拨号盘并模拟击键。

任何人?

编辑:我发现了这个问题 开始 InCallScreen 活动 ,这让我认为我只需要向 'com.android.phone.InCallScreen' 发送一个 keydown 事件,但我不知道该怎么做。这也是一个直接相关的问题,已经(并且仍然)开放多年: http ://code.google.com/p/android/issues/detail?id=1428

4

1 回答 1

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),但这似乎需要用户确认才能发送额外的数字。

于 2012-12-01T22:02:37.537 回答