【发布时间】:2019-05-21 15:51:17
【问题描述】:
我正在寻找一种方法来从我用 Delphi 10.3 编写的 Android 应用开始视频通话。为此,我想将 Android 意图用于第 3 方应用(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 应用进行视频通话?
【问题讨论】:
-
似乎这些答案的代码比您显示的要多
-
@DaveNottage 添加了意图调用代码。我还能提供什么?
-
您是否尝试过除 TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY 之外的其他意图执行参数?
-
@Lucker10 现在尝试
MATCH_ALL,没有任何改变。
标签: android delphi android-intent whatsapp skype