Inicie un Hangout específico con una persona

Me gustaría que mi tableta se inicie en la aplicación Google Hangouts y abra la conversación con una persona específica.

Puedo abrir la aplicación Hangouts fácilmente con esta aplicación (o una de las muchas similares), pero necesito abrir la conversación y esto me deja en la página de la lista de personas.

Recursos que no me han llevado allí:

Pregunta similar en Reddit

Discusión similar para la aplicación Tasker

Tutoría de YouTube

Cuando intento usar AutoContacts y registrar la %achangouturivariable, no funciona. Muchas personas dicen que necesitaban habilitar la sincronización de contactos en G+, pero los menús han cambiado y no funciona. Ese es el problema más común. Pero no es mío.

Usando la aplicación Automate , finalmente pude registrar el URI para el contacto y, por lo tanto, tener una identificación única con la que algún día pueda abrir una conversación.

La forma en que lo obtuve fue usando "Seleccionar contacto", configurando la variable de salida en contactURI y luego usando log para iniciar sesión {contactUri}.

Sin embargo, todavía no puedo abrir el chat de hangout.

Usando Automate, elijo iniciar la aplicación y elijo hangouts.

He intentado usar:

  • ACCIÓN: android.intent.action.VIEW
  • DATOS: contenido://com.android.contacts/data/xxxx
    • así como DATOS: content://com.android.contacts/contacts.lookup/xxxx
  • TIPO MIME: vnd.android.cursor.item/vnd.googleplus.profile.comm

En la respuesta de Reddit, no entiendo y no puedo encontrar las opciones para establecer las banderas que hizo en Tasker o Automate:

INDICADORES: FLAG_ACTIVITY_FORWARD_RESULT FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET FLAG_ACTIVITY_PREVIOUS_IS_TOP

También he intentado usar y no usar com.google.android.talk - com.google.android.apps.babel.phone.BabelProfileActionActivityen el campo de actividad.

No creo que exista un kit prefabricado de esta naturaleza.
Si la conversación siempre se mantiene en una posición particular, entonces puede tener cierto éxito usando AutoInput
Si alguien explica cómo usar la aplicación Automate para hacer lo que he descrito, lo marcaré como respondido.
También debo decir que Touchless Chat podría resolver el problema, pero no es compatible con mi dispositivo.
@Firelord Autoinput no es compatible con mi dispositivo.
¿La entrada automática no es compatible? ¿Estás usando un Android por debajo de 4.3? Además, su dispositivo está rooteado porque, en ese caso, simplemente puede usar un comando de shell para pasar la bandera.
Dado que escribió que usó el código, es muy probable que haya usado una función de Java. Aquí hay un ejemplo: groups.google.com/forum/#!topic/tasker/lqlCpcLf-J4 y puede agregar tareas de funciones Java usando Código -> Función Java.
El dispositivo no está rooteado y no puedo actualizar más allá de 4.3 porque romperá 4G. Asus no ha lanzado un parche y probablemente nunca lo hará.
Si se ofrece una solución usando MacroDroid, ¿la consideraría? Preguntando para poder intentar
@beeshyams Sí.

Respuestas (1)

He hecho esto usando tasker. Está completamente en el camino correcto, las instrucciones a continuación.

SQL para encontrar ID de contacto

Encuentre la ID de contacto única de la base de datos de contactos (que parece que ya lo ha hecho). En caso de que tenga la ID incorrecta, puede verificar con las instrucciones de SQL. Tuve algunos problemas con esto dado que solo ingresaba el primer nombre cuando buscaba el contacto y, por alguna razón, no se encontraba. De todos modos, esta consulta SQL debería funcionar en el archivo: /data/data/com.android.providers.contacts/databases/contacts2.db

Puede usar una aplicación/programa SQL, buscar ese archivo e ingresar la consulta SQL:

SELECT _id FROM data WHERE raw_contact_id LIKE (SELECT _id from raw_contacts WHERE display_name LIKE "Contact Name" ORDER BY _id DESC LIMIT 1) AND DATA4 LIKE "10" ORDER BY _id DESC LIMIT 1

O puede ingresar este comando en la terminal siempre que tenga sqlite3 en su dispositivo específico (a menudo no incluido en los dispositivos de lanzamiento de producción):

sqlite3 /data/data/com.android.providers.contacts/databases/contacts2.db 'SELECT _id FROM data WHERE raw_contact_id LIKE (SELECT _id from raw_contacts WHERE display_name LIKE "Contact Name" ORDER BY _id DESC LIMIT 1) AND DATA4 LIKE "10" ORDER BY _id DESC LIMIT 1' | sed s/\"//g

Simplemente reemplace "Nombre de contacto" y coloque el contacto que desea abrir entre comillas. Preferiblemente el nombre completo del contacto.

Teléfono no rooteado

Estaba trabajando en una solución para esto, pero la copia de seguridad de la aplicación está deshabilitada explícitamente en el manifiesto de la aplicación de contactos. Pruebe la solución a continuación y avíseme si funciona. No pude probarlo sin root.

Instale Tasker y AutoContacts. AutoContacts es pago, pero puede obtener uno en los próximos 15 minutos después de comprar la versión completa si solo desea probarlo.

Configure una tarea en tasker, asígnele un nombre y luego agregue una nueva acción Complemento > Contactos automáticos > Contactos automáticos. Luego en la configuración digite en "Nombre o Apodo del Contacto" el nombre del contacto deseado. Presiona la garrapata. Presione el botón Atrás en Tasker para volver a la lista de acciones para esa tarea (ahora tendrá 1). Agregue una nueva acción Alerta > Flash. Presiona el botón a la derecha de "texto" que parece una etiqueta y selecciona "Autocontactos: 01. Hangout Uri... %achangouturi". Pulse atrás para ir a la lista de acciones. Vuelva a pulsar atrás para guardar la tarea. Vuelve a la tarea y ejecútala. La identificación que necesita para el contacto que desea estará al final de la cadena que parpadea y generalmente tendrá 5 dígitos. Vuelva a ejecutar la tarea si no la atrapó a tiempo.

Creando una tarea de Tasker

Una vez que haya copiado la identificación, debe ingresar a Tasker para crear la tarea que abrirá Hangouts a la conversación. Tienes la idea correcta para usar una intención, es solo un poco diferente de lo que ya tienes. En la nueva tarea, cree una nueva acción "+", seleccione Sistema > Intención de envío. Cree la intención en el siguiente formato:

Action: android.intent.action.VIEW
Cat: None
Mime Type: Leave blank
Data: content://com.android.contacts/data/#####
Extras/package/class: Leave blank
Target: Activity

Donde ##### es el ID de contacto que encontraste anteriormente. Los míos tenían 5 dígitos.

Ahora deberías poder usar esta tarea para lo que tu corazón desee. Pruébelo presionando el botón de reproducción en la tarea en Tasker.

Una nota rápida, principalmente uso el mío junto con AutoVoice para abrir un mensaje que acabo de enviar. Me resultó muy útil poder volver a iniciar Hangouts en la pantalla principal y, de hecho, lo encontré bastante difícil ya que la "aplicación para matar" de Tasker no reiniciaba Hangouts por completo. Encontré que la forma de hacerlo es crear una acción "Iniciar aplicación" y seleccionar la casilla de verificación "Iniciar siempre una nueva copia". Esto siempre abrirá los hangouts a la lista de hilos principales.

La mayor parte de esto es de esta discusión de Grupos de Google . Buena suerte, avísame si tienes algún problema.

Lo mismo debería funcionar en la automatización. Simplemente intentaría dejar Mime en blanco y formatear el resto como está arriba.
Ninguna de las aplicaciones de SQL que he usado tiene acceso a esa base de datos/carpetas. Intenté usar adb, pero no tengo permiso para extraer. ¿Hay alguna manera de hacer esto sin root?
hmmm... tengo raíz. No estoy seguro si puedes. dame un segundo
¿Has probado a usar el ID que ya tienes con mi método?
Acabo de usar la automatización en mi propio teléfono y comparé la identificación que obtuve de su proceso con la identificación que obtuve usando el archivo db y, lamentablemente, no es lo mismo. El ID de Automate tenía 4 dígitos (con bastante información antes de eso) y la cadena en SQL siempre ha sido de 5 dígitos para mí. Sin embargo, sí noté que la ID automática es en realidad la misma que la ID de contacto en la tabla raw_contacts, pero la ID que necesita Hangouts es la ID de la tabla de datos. En teoría, puede probar muchas identificaciones y eventualmente puede obtener la que desea. Porque después de mucha investigación no parece posible desrootearlo
Ajá, puede que lo tenga. Vea la actualización para probarlo usted mismo.
Acabo de probar esto en Automate. Funciona excelentemente. Solo elige la actividad y selecciona Hangouts. Configure la acción para ver. En el URI de datos, coloque exactamente lo mismo que los "datos" del tasker uno arriba content://com.android.contacts/data/#####y reemplace los hash con la ID de contacto que se puede encontrar en las instrucciones no rooteadas. Deje todo lo demás como está y ejecute el flujo.
No tengo acceso al %achangoutsuri usando AutoContacts. Hablo de ello en mi pregunta. La cadena %achangoutsurise envía en lugar de un número de 5 dígitos. La razón más común por la que la sincronización de contactos de G+ no está configurada. Mire el último elemento de este faq . Sin embargo, la configuración de mi tableta no se alinea con lo que él sugiere. No hay una configuración de nivel superior de Google+. Lo más cercano que puedo encontrar es Google > Elegir mi cuenta > Contactos. Creo que Google ha sincronizado los contactos fuera de G+. Gracias por tu ayuda, pero no está funcionando del todo.
Intente buscar en las cuentas y la configuración de sincronización. Debería poder marcar google+, que debería sincronizar los contactos desde allí. Creo que es mucho más fácil y más confiable rootear y obtener acceso a la base de datos, pero si realmente no puede hacerlo, asegúrese de que el contacto que está buscando en AutoContacts tenga el NOMBRE EXACTO del contacto en sus contactos que tiene un perfil de G+ debajo de su contacto. Deben estar incluidos en sus contactos con un enlace de perfil de G+, y debe usar ese nombre exacto, de lo contrario, no aparecerá en los contactos automáticos.
¡La pieza crucial era asegurarse de que el nombre del contacto y el nombre de G+ coincidieran exactamente! ¡Gracias un montón!
Está bien, me alegro de haber podido ayudar a resolverlo.