Je recherche un moyen de démarrer un appel vidéo dans Hangouts ou Duo. Il ne semble y avoir aucune documentation concernant les intentions à utiliser. est-ce que quelqu'un a une idée?
A) HangoutUrlHandlerActivity
, ShortlinkUrlHandlerActivity
et ConversationUrlHandlerActivity
sont disponibles pour recevoir Intent
avec un Uri
.
Ce que j'ai jusqu'à présent, qui fonctionne réellement, mais uniquement pour conversations et appels vidéo en cours :
a) ouvrir une conversation en cours:
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) rejoindre un appel vidéo en cours (l'ID provient de 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);
}
Si les invitations directes ne sont pas possibles, vous pouvez toujours planifier des appels via l'API Calendar, d'où l'on obtient le callId
, afin de pouvoir rejoindre le Hangout une fois qu'il est planifié. Google Meet ne prend même pas en charge les invitations directes, mais uniquement via les rendez-vous Google Agenda.
Sur la base du commentaire de @ Mir Milad , j'ai réussi à au moins créer une nouvelle conversation textuelle; mais toujours rien qui appellerait quelqu'un (on le notifie dès que le premier message a été envoyé):
/** @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);
}
Pour autant que je sache, il n'existe pas d'URL explicite "appelez-moi" pour les Hangouts. Et même sur le Web, le Hangout est lancé avec deux identifiants Gaia, qui se traduisent ensuite par un nom de salle à rejoindre. Même le propre de Google Hangouts Dialer semble être cassé, en regardant les commentaires récents.
B) Pour Google Duo, cela a déjà été répondu ici .