web-dev-qa-db-fra.com

Lancer un appel vidéo dans Hangouts ou Duo à l'aide de l'intention?

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?

7
damluar

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 .

0
Martin Zeitler