android - 如何在其他调用运行时以编程方式合并调用(电话 session )

标签 android api merge

我的要求是这样的:假设我当时正在调用一个号码,并且我想以编程方式调用另一个号码。到目前为止,我所做的是:我可以在某些调用已经进行时调用特定号码。例如,假设我正在调用 123 号码,并且在 1 分钟后(通过使用 Alarm Manger 我触发了一个事件来调用另一个号码 456,然后就完成了!

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:456"));
startActivity(intent);

我正在使用这样的 Intent 打电话,现在我可以通过一个按钮在手机上看到屏幕以合并通话:

screenshot of phone

在此图像中,您可以看到合并调用的按钮。现在,当用户单击合并时,它将合并所有 3 个调用。我想以编程方式完成,而不是使用用户界面。

最佳答案

您的问题似乎很有趣,因此我开始研究 Android Source。这是我发现的:

您发布的图片中的 Activity 名为InCallUI

当您开始环顾四周时,您会发现 InCallPresenter在第 463 行有:

final boolean canMerge = activeCall.can(Capabilities.MERGE_CALLS);

然后在 472:

CallCommandClient.getInstance().merge();

当您检查 CallCommandClient 中的 merge() 方法时你会发现它使用 ICallCommandService我认为这是你在寻找的界面:)

CallCommandClient 的初始化位于 CallHandlerService在第 193 行附近。

希望这会有所帮助并祝你好运。

PS。我列出的 API 大多是 Android 内部的东西。您可能必须使用反射来调用它,或者它可能根本不可能 - 您的应用可能无法访问它,因为它没有被标记为系统应用。

关于android - 如何在其他调用运行时以编程方式合并调用(电话 session ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951638/

相关文章:

Nexus 7 上未调用 Android Jellybean onCreateOptionsMenu

Java如何调用kotlin扩展方法

node.js - 如何将 postman 的数据发布到 Output.json 文件?

git - Git如何通过选择远程版本自动解决 merge 冲突?

android - 如何在Android中将音频文件发布到服务器

android - 从 SQLite Blob 创建 Drawable 时出现问题

javascript - 从外部元素控制 Flexslider。

api - salesforce rest api INVALID_SESSION_ID 错误

svn - 删除不必要的 svn :mergeinfo properties

awk - 根据第一列组合多个制表符分隔文件的某些列