dam*_*uar 8 android hangout google-duo
我正在寻找一种在环聊或 Duo 中发起视频通话的方法。关于应该使用什么意图,似乎有 0 个文档。有没有人有想法?
让我们在这里考虑一下Duo。
1.首先,要找出意图,您应该激活手机上的USB调试模式 - 请参阅此答案以了解如何操作。
2.然后,将您的手机连接到您的计算机,以便您可以从您的设备看到logcat(调试级别应该是信息)。
3.打开通讯录(来自 Google)并找到您可以使用Duo呼叫的联系人。现在,开始通话并搜索com.google.android.apps.tachyon。会有几场比赛,但重要的一场比赛看起来像:
开始 u0 {act=com.google.android.apps.tachyon.action.CALL typ=null flg=0x0 cmp=ComponentInfo{com.google.android.apps.tachyon/com.google.android.apps.tachyon.ExternalCallActivity}来自 uid 10031
4.因此,一旦您知道Duo应用程序的组件信息,只需在您的应用程序中添加以下代码即可开始视频通话。
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)
Run Code Online (Sandbox Code Playgroud)
5.您将看到一个包含可能的联系人的视频通话屏幕。
如果您想了解如何开始视频通话或聊天或其他事情,请尝试执行与上述相同的操作 - 首先手动执行并检查在这些情况下使用了哪些意图(和参数)。
A) HangoutUrlHandlerActivity,ShortlinkUrlHandlerActivity并且ConversationUrlHandlerActivity可Intent通过Uri.
到目前为止,我所拥有的实际上是有效的,但仅适用于正在进行的对话和视频通话:
a) 开启正在进行的对话:
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);
}
Run Code Online (Sandbox Code Playgroud)
b) 加入正在进行的视频通话(ID 来自hangouts.google.com/hangouts/_/meet):
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);
}
Run Code Online (Sandbox Code Playgroud)
如果无法进行直接邀请,人们仍然可以通过日历 API 安排通话,从那里获取通话信息callId,以便在安排好环聊后就可以加入环聊。Google Meet甚至不支持直接邀请,而只能通过 Google 日历预约。
根据@ Mir Milad的评论,我至少成功创建了一个新的文本对话;但仍然没有任何东西可以给某人打电话(它会在第一条消息发送后立即通知):
/** @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);
}
Run Code Online (Sandbox Code Playgroud)
据我所知,环聊不存在明确的“给我打电话”网址。即使是基于网络的环聊也是通过两个 Gaia ID 发起的,然后生成一个要加入的房间名称。从最近的评论来看,甚至谷歌自己的环聊拨号器似乎也被破坏了。
B) 对于 Google Duo,这个问题已经在这里得到解答。
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |