如何从Delphi Android应用程序启动视频通话?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Delphi Android应用程序启动视频通话?相关的知识,希望对你有一定的参考价值。

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

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

基于https://stackoverflow.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://stackoverflow.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://stackoverflow.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://stackoverflow.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应用程序进行视频通话?

答案

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

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

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

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

使用delphi在Android下的TWebbrowser中全屏观看youtube或其他视频时出现问题

如何在Delphi XE7下写一个Android APP

如何在Delphi XE7下写一个Android APP

如果应用程序启动后允许位置,Delphi Android 位置传感器不起作用

delphi 请问,如何不允许关闭某程序

高分求教:Delphi中如何利用vfw传送视频流(另送200分)