Inicia Google Hangout from Intent en la nueva aplicación de Android de Hangouts

Aquí hay discusiones previas sobre cómo iniciar un Hangout de Google desde una intención en Android: iniciar google hangouts en Android

¿Cómo puedo iniciar un Google Hangout en Android con un Intento?

La conclusión fue que esto no fue posible. Se trata de una mejora solicitada aquí: https://code.google.com/p/google-plus-platform/issues/detail?id=385

Sin embargo, ayer Google lanzó una nueva aplicación de Hangouts, con un nuevo conjunto de intenciones. ¿Ahora es posible comenzar un hangout por intención?

He tenido un éxito parcial con action=android.intent.action.VIEW , data=content://plus.google.com/hangouts .

Sin embargo, quiero pasar el nombre o ID de la persona a la que quiero llamar, el nombre del destinatario. No puedo resolver esto.

La nueva aplicación de hangout basada en navegador inicia un hangout con una URL como esta:

 https://plus.google.com/hangouts/_/CONVERSATION/[26-character ID]?hl=en_US&hscid=[19-digit ID]&hpe=[14-character value]&hpn=[Google+ Name of Recipient]&hnc=0&hs=41. 

Supongo que no todos estos parámetros son necesarios para iniciar un hangout, pero no puedo descifrar cómo pasar el nombre del destinatario en el bash.

¿Alguna idea? Gracias.

Así que no sé si esto ayuda a alguien más porque en su mayoría buscaba disparar un bash usando el tasker. Si accedes a Google+> Configuración> Contactos, puedes marcar “Mantener contactos actualizados” y agregará algunas acciones nuevas a la tarjeta que aparece cuando haces clic en un usuario en Android. Luego puede usar la Intercepción de intención para leer los valores que llegan. Esto es lo que obtuve:

 ACTION: android.intent.action.VIEW DATA: content://com.android.contacts/data/5555 TYPE: vnd.android.cursor.item/vnd.googleplus.profile.comm FLAGS: FLAG_ACTIVITY_FORWARD_RESULT FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET FLAG_ACTIVITY_PREVIOUS_IS_TOP 1 ACTIVITIES MATCH THIS INTENT: Hangouts (com.google.android.talk - com.google.android.apps.babel.phone.BabelProfileActionActivity) 

Pude usar los tres valores principales para abrir correctamente una conversación con ese contacto. Obviamente, el número en su campo de datos cambiará dependiendo del contacto. Puedes usar el truco con Intent Intercept, o si tienes root puedes usar algo como SQLite Debugger para abrir la tabla de datos en la base de datos de contactos y encontrar filas donde MIMETYPE_ID = 16 y DATA4 = 10. Tendrás para averiguar cuál es tu RAW_CONTACT_ID también. ¡Buena suerte!

La solución simple es Query ContactContract.Data para el _id y el tipo MIME.

 ContentResolver resolver = context.getContentResolver(); cursor = resolver.query( ContactsContract.Data.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME); //Now read data from cursor like while (cursor.moveToNext()) { long _id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data._ID)); String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); String mimeType = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE)); Log.d("Data", _id+ " "+ displayName + " " + mimeType ); } 

La salida será como la siguiente

12561 Allen vnd.android.cursor.item / vnd.googleplus.profile.comm

12562 Allen vnd.android.cursor.item / vnd.googleplus.profile.comm

12564 Allen vnd.android.cursor.item / vnd.googleplus.profile

Ahora guarde en DB o en otro lugar solo aquellos _Ids cuyo tipo MIME sea vnd.android.cursor.item / vnd.googleplus.profile.comm

Y luego inicias una llamada / mensaje de hangout con esos contactos de esta manera

 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); // the _ids you save goes here at the end of /data/12562 intent.setDataAndType(Uri.parse("content://com.android.contacts/data/_id"), "vnd.android.cursor.item/vnd.googleplus.profile.comm"); intent.setPackage("com.google.android.talk"); startActivity(intent); 

Para que el código anterior funcione, debe tener que marcar “Mantener los contactos actualizados” en la Aplicación de Google+> Configuración> Contactos.

Hangout puede gestionar la intención genérica de compartir.

Aquí está el código:

  Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, "text to be shared"); activity.startActivity(sendIntent); 

intenta de esta manera

A continuación, usa el método para compartir texto en hangout

 /** * Initiate the actions encoded in the specified URI. */ public void initiateHangOutUri(Context myContext, String textToShare) { // Make sure Android client is installed. if (!isHangOutClientInstalled(myContext)) { goToMarket(myContext); return; } Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, textToShare); sendIntent.setType("text/plain"); sendIntent.setPackage("com.google.android.talk"); context.startActivity(sendIntent); return; } 

A continuación, use el método para verificar HangOut instalado en este dispositivo

 /** * Determine whether the HangOut for Android client is installed on this device. **/ public boolean isHangOutClientInstalled(Context myContext) { final PackageManager packageManager = context.getPackageManager(); Intent intent = packageManager.getLaunchIntentForPackage("com.google.android.talk"); if (intent == null) { return false; } List list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } 

Debajo del método use goto playstore si HangOut no está instalado

 public void goToMarket(Context myContext) { Uri marketUri = Uri.parse("market://details?id=com.skype.raider"); Intent myIntent = new Intent(Intent.ACTION_VIEW, marketUri); myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); myContext.startActivity(myIntent); return; } 

hey, creo que intenta esto

 Intent sky = new Intent("android.intent.action.VIEW", Uri.parse("https://talkgadget.google.com/hangouts/extras/talk.google.com/myhangout")); startActivity(sky); 

Solo debe proporcionar la URL del hangout, pero desafortunadamente Google suspendió los hangots con nombre, por lo que esta url cambia cada vez.