首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用intent在Hangout或Duo中开始视频通话?

使用intent在Hangout或Duo中开始视频通话?
EN

Stack Overflow用户
提问于 2020-02-14 01:15:42
回答 3查看 2.1K关注 0票数 8

我正在寻找一种在Hangout或Duo中开始视频通话的方法。似乎没有关于应该使用哪些意图的文档。有谁有主意吗?

EN

回答 3

Stack Overflow用户

发布于 2020-02-20 15:28:34

让我们考虑这里的Duo

研究

1.首先,为了找出意图,你应该在你的手机上激活USB调试模式-请参考这个answer了解如何做。

2.然后,将您的手机连接到您的计算机,以便您可以从您的设备看到logcat (调试级别应为info)。

3.打开Contacts(来自谷歌),找到您可以使用Duo呼叫的联系人。现在,开始呼叫并搜索com.google.android.apps.tachyon。将会有几场比赛,但最重要的一场看起来像这样:

从uid 10031启动{act=com.google.android.apps.tachyon.action.CALL typ=null

u0 typ=null flg=0x0 uid

4.所以,一旦你知道了你的Duo应用程序的组件信息,只需在你的应用程序中添加以下代码,你就可以开始视频通话了。

代码语言:javascript
运行
复制
val intent = Intent()
intent.setAction("com.google.android.apps.tachyon.action.CALL")
intent.setClassName("com.google.android.apps.tachyon",
    "com.google.android.apps.tachyon.ExternalCallActivity")
startActivity(intent)

5.您将看到一个视频呼叫屏幕,其中包含可能的联系人。

结论

如果你想知道如何开始视频通话或聊天或其他事情,试着像上面一样做-首先手动做,并检查在这些情况下使用了什么意图(和参数)。

票数 6
EN

Stack Overflow用户

发布于 2020-02-25 18:47:31

目前还没有任何适用于google duo应用集成的API文档。

你可以使用这个代码,它可以用来启动一个duo呼叫。

代码语言:javascript
运行
复制
String data = "content://com.android.contacts/data/" + ID;
// Build the intent
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
// the _ids you save goes here at the end of /data/id
intent.setData(Uri.parse("content://com.android.contacts/data/" + ID));
//For audio call
intent.setComponent(new ComponentName(packageName, "com.google.android.apps.tachyon.ContactsAudioActionActivity"));
//use this for video call
//intent.setComponent(new ComponentName(packageName, "com.google.android.apps.tachyon.ContactsVideoActionActivity"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Verify it resolves
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
// Start an activity if it's safe
if (isIntentSafe) {
    context.startActivity(intent);
    Toast.makeText(context, "Opening Duo", Toast.LENGTH_SHORT).show();
}

或者你可以使用下面的方法传递电话号码

代码语言:javascript
运行
复制
Intent intent = new Intent();
intent.setPackage("com.google.android.apps.tachyon");
intent.setAction("com.google.android.apps.tachyon.action.CALL");
intent.setData(Uri.parse("tel:1234567890"));
startActivity(intent);
票数 3
EN

Stack Overflow用户

发布于 2020-02-20 15:02:14

A) HangoutUrlHandlerActivityShortlinkUrlHandlerActivityConversationUrlHandlerActivity可用于接收带有UriIntent

到目前为止,我所拥有的实际上是有效的,但仅适用于正在进行的对话和视频通话:

a)打开正在进行的对话:

代码语言:javascript
运行
复制
void joinConversation(@NonNull String conversationId) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri uri = new Uri.Builder().scheme("content").authority("hangouts.google.com").appendPath("chat").appendPath(conversationId).build();
    intent.setClassName("com.google.android.talk", "com.google.android.apps.hangouts.phone.ConversationUrlHandlerActivity");
    intent.setDataAndType(uri, "vnd.google.android.hangouts/vnd.google.android.hangout_whitelist");
    startActivity(intent);
}

b)加入正在进行的视频通话( ID来自hangouts.google.com/hangouts/_/meet):

代码语言:javascript
运行
复制
void joinHangout(@NonNull String callId) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri uri = new Uri.Builder().scheme("content").authority("g.co").appendPath("hangout").appendPath(Uri.encode(callId)).build();
    intent.setClassName("com.google.android.talk", "com.google.android.apps.hangouts.phone.ShortlinkUrlHandlerActivity");
    intent.setDataAndType(uri, "vnd.google.android.hangouts/vnd.google.android.hangout_whitelist");
    startActivity(intent);
}

如果不能直接邀请--仍然可以通过Calendar API来安排调用,这样一旦安排好就可以加入到Hangout中来,从Calendar API获取callId。谷歌Meet甚至不支持直接邀请,但只能通过谷歌日历约会。

基于@Mir Milad的评论,我至少已经创建了一个新的文本对话;但仍然没有人会打电话(它会在第一条消息发送后立即通知):

代码语言:javascript
运行
复制
/** @param googleUserId that 21 digit Google user ID, aka Gaia ID  */
void createConversation(@NonNull String googleUserId) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri uri = new Uri.Builder().scheme("content").authority("hangouts.google.com").appendPath("chat").appendPath("person").appendPath(googleUserId).build();
    intent.setClassName("com.google.android.talk", "com.google.android.apps.hangouts.phone.ConversationUrlHandlerActivity");
    intent.setDataAndType(uri, "vnd.google.android.hangouts/vnd.google.android.hangout_whitelist");
    startActivity(intent);
}

据我所知,Hangout没有明确的"call me“URL。甚至是基于网络的,Hangout是由两个Gaia ID发起的,然后导致一个房间名称加入。看看最近的评论,就连谷歌自己的Hangouts Dialer似乎也被打破了。

B)对于谷歌Duo,这个问题已经得到了here的回答。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60213280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档