android - utiliza - que necesitas para usar hangouts
Inicia Google Hangout from Intent en la nueva aplicaciĆ³n de Android de Hangouts (5)
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 intento.
¿Alguna idea? Gracias.
Así que no sé si esto ayuda a alguien más porque en su mayoría buscaba disparar un intento 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!
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);
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.
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.
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<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;
}