如何从 Delphi Android 应用程序开始视频通话?

Posted

技术标签:

【中文标题】如何从 Delphi Android 应用程序开始视频通话?【英文标题】:How to start a videocall from Delphi Android app? 【发布时间】:2019-05-21 15:51:17 【问题描述】:

我正在寻找一种方法来从我用 Delphi 10.3 编写的 android 应用开始视频通话。为此,我想将 Android 意图用于第 3 方应用(WhatsApp 或 Skype)。

这是我已经尝试过的。我使用123 作为联系人 ID,希望即使它不是有效的 ID,WhatsApp 仍应打开并发出警告:

基于https://***.com/a/38674897 - 没有任何反应

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setData(StrToJURI('content://com.android.contacts/data/123'));
Intent.setType(StringToJString('vnd.android.cursor.item/vnd.com.whatsapp.voip.call'));

基于https://***.com/a/46049004 - 没有任何反应

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setData(StrToJURI('content://com.android.contacts/data/123'));
Intent.setType(StringToJString('vnd.android.cursor.item/vnd.com.whatsapp.video.call'));
Intent.setPackage(StringToJString('com.whatsapp'));

修复建议停用 SetType https://***.com/a/28244207 - 没有任何反应

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(
  StrToJURI('content://com.android.contacts/data/123'),
  StringToJString('vnd.android.cursor.item/vnd.com.whatsapp.video.call'));
Intent.setPackage(StringToJString('com.whatsapp'));

基于 https://***.com/a/14294299 的 Skype 代码示例 - 它会打开 Skype,但不会在第一次尝试时打开聊天/通话。如果我在 Skype 在后台打开时切换到我的应用程序,第二次尝试它会开始视频通话。

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
//Intent.setData(StrToJURI('skype:username?call&video=true'));
Intent.setData(StrToJURI('skype:username'));

尝试videocall 操作 - 弹出消息“找不到接收器”

Intent := TJIntent.Create;
Intent.setAction(StringToJString('com.android.phone.videocall'));
Intent.setData(StrToJURI('skype:username'));

Intent := TJIntent.Create;
Intent.setAction(StringToJString('com.android.phone.videocall'));
Intent.setData(StrToJURI('tel:123456789'));

所有意图都通过以下方式执行:

if MainActivity.getPackageManager.queryIntentActivities(Intent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then
  MainActivity.startActivity(Intent)
else
  ShowMessage('Receiver not found');

如何通过 Delphi 编写的 Android 应用进行视频通话?

【问题讨论】:

俄语中的相同问题:ru.***.com/questions/923657 似乎这些答案的代码比您显示的要多 @DaveNottage 添加了意图调用代码。我还能提供什么? 您是否尝试过除 TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY 之外的其他意图执行参数? @Lucker10 现在尝试MATCH_ALL,没有任何改变。 【参考方案1】:

这不是 dephi 特定的问题。您的代码即使在 java 中也不起作用。(它显示未找到接收器)

请参阅以下内容。他们在java中,但我想他们可以为你指出正确的道路

    android-make whatsapp call Android: Retrieve contact name from phone number https://developer.android.com/training/permissions/requesting#java

【讨论】:

感谢您提供的链接,但是他们似乎没有回答问题。 1. 具有与问题相同的代码。 2. 检索联系人姓名并非如此。 3.获取权限也不是这样。

以上是关于如何从 Delphi Android 应用程序开始视频通话?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi春天将来临,Android遇到XE7我也是醉了,Hello World

如何在Delphi XE7下写一个Android APP

如何在Delphi XE7下写一个Android APP

如何使用Delphi更改Android应用程序中的标题栏颜色

在delphi里面怎么计算比如说从现在开始5天后的日期是啥?

Delphi:在Android下提取资源