我正在寻找一种方法,可以从用Delphi 10.3编写的Android应用程序开始视频通话。为此,我想将Android Intent用于第三方应用程序(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应用进行视频通话?
答案 0 :(得分:0)
这不是dephi特有的问题。您的代码即使在Java中也不起作用(显示未找到接收器)
请参阅以下内容。它们在Java中,但我想它们可以为您指出正确的路径