Inicia Google Hangout desde Intent en la aplicación Android de Hangouts nuevos

Hay discusiones anteriores sobre el inicio de un hangout de Google desde una intención en Android: inicie google hangouts en android

¿Cómo puedo iniciar un hangout de Google en Android con un intento?

La conclusión fue que esto no era 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 intentos. ¿Es posible iniciar un hangout mediante la intención ahora?

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

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

La nueva aplicación de hangout basada en navegador inicia un hangout con una URL similar a la siguiente:

 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 la intención.

¿Alguna idea? Gracias.

Así que no sé si esto ayuda a alguien más porque yo estaba buscando principalmente para disparar una intención usando tasker. Si accedes a Google+> Configuración> Contactos, puedes comprobar "Mantener contactos actualizados" y agregará algunas acciones nuevas a la tarjeta que aparece al hacer clic en un usuario de android. A continuación, puede utilizar Intent Intercept para leer los valores que vienen a través. Esto es lo que tengo:

 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 superiores para abrir correctamente una conversación con ese contacto. Obviamente, el número en su campo de datos cambiará dependiendo del contacto. Puede utilizar el truco con Intent Intercept o, si tiene root, puede usar algo como SQLite Debugger para abrir la tabla de datos en la base de datos de contactos y buscar filas donde MIMETYPE_ID = 16 y DATA4 = 10. Tendrá Para encontrar su lo que su RAW_CONTACT_ID es demasiado. ¡Buena suerte!

La solución simple es, Query ContactContract.Data para el tipo _id y 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 algún otro lugar solamente aquellos _Ids cuyo tipo MIME es vnd.android.cursor.item / vnd.googleplus.profile.comm

Y luego iniciar la conversación Hangout / mensaje con los 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 debes tener que marcar "Mantener contactos actualizados" en la aplicación de Google+> Configuración> Contactos.

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

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); 

Hey creo que probar esto.

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

Sólo tienes que dar la URL del hangout, pero por desgracia google suspendió el hangots nombre, por lo que esta url cada vez que cambia.

Intentar de esta manera

Uso del método inferior para compartir el texto en el 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; } 

Uso del método inferior para comprobar 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<ResolveInfo> 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; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.