2010-08-28 16 views
6

Estoy tratando de abrir programáticamente un correo electrónico individual en la aplicación Gmail en Android.Cómo abrir un mensaje/conversación en particular en la aplicación Gmail

Sé que se puede hacer porque las notificaciones integradas te envían a un mensaje cuando haces clic en ellas y hay una aplicación en el mercado llamada Gmail Notifier que también lo hace.

Lo que he probado hasta ahora:

-Enviar un intento ACTION_VIEW con el mensaje como datos URI (- no se pueden resolver URI)

-Enviar un intento de abrir HtmlConversationActivity en el paquete de Gmail (falló - "requiere permiso: nulo")

¿Ayudaría agregar banderas o una categoría a la intención? De ser asi, cuales)?

Sé que la aplicación de Gmail no está bien documentada, pero me enloquece que definitivamente haya una manera de hacerlo y ¡no puedo entenderlo!

P.S .: Esta es la primera vez que publico en stackoverflow, por lo que me disculpo por adelantado si ignoro alguna convención.

Respuesta

8

Es posible, pero google se ha asegurado de que sea imposible. Me pasé un par de horas tratando de hacer que funcione:

  1. apretó el Gmail.apk de mi teléfono raíces.
  2. Lo compiló usando apktools.
  3. fue por arriba del manifest.xml

2 Actividades parecen ser útiles para ello:

actividad android: theme = "@ android: estilo/Theme.Light.NoTitleBar" android: label = "@ string/activity_conversation" android: name = "HtmlConversationActivity" android: configChanges = "keyboardHidden | orientación"

y

actividad android: label = "@ string/activity_search" android: name = "SearchActivity"

Ambos de ellos no tienen la intención filtros por lo que no se les puede llamar. Si intenta obtendrá negación

permiso: a partir Intención {actuar = android.intent.action.VIEW flg = 0x10000000 cmp = com.google.android.gm/.HtmlConversationActivity} {ProcessRecord de 40b7d248 26043: bobina.gmailresearch/10154} (pid = 26043, uid = 10154) requiere nula

Podría ser posible utilizando la com.google.android.gm.ConversationListActivity. embargo, el código debe ser ofuscado y no me molesta para obtener el código fuente de la Gmail.apk para verificar la cual las banderas que utilizan ...

EDIT: Bueno Aceptar que se molestó en comprobarlo, y sorprendente suficiente Google no ofuscó su aplicación de Gmail :) Así que pude obtener el código fuente de la APK. Hice algunas excavaciones y esto es lo que encontré ...

La actividad relevante es ConverstaionListActivity.

En el Manifest.xml tiene la intención de este filtro:

acción android: name = "android.intent.action.SEARCH" />

Como inspeccioné el código de la actividad descubrí que hay 3 cadenas esperadas para obtener como extra:

public static final String EXTRA_LABEL = "label"; 
public static final String EXTRA_SEARCH = "search"; 
public static final String EXTRA_TITLE = "title"; 

Anyways. línea de botón, no puede abrir una conversación específica. pero puede pasar una consulta de búsqueda que mostrará solo su conversación específica de todos los correos que tiene el usuario.

Intent mailClient = new Intent(Intent.ACTION_SEARCH); mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity"); mailClient.putExtra("query", "15 Apps for Programming");
startActivity(mailClient);

+2

esto parece no funcionar más. Solo lo intenté. ¿Ha tenido alguien algún éxito con esto? – Enigma

+0

Sí Esto ya no funciona ... –

1

Estoy tratando de abrir programáticamente un correo electrónico individual en la aplicación de Gmail en Android.

No hay Intents documentado y compatible para trabajar con la aplicación Gmail. Se supone que los desarrolladores no deben integrarse estrechamente con esta aplicación: si Google deseara tal integración, documentarían y apoyarían dicha integración, como lo han hecho con los contactos.

+3

yo sabía que dirías eso, pero si quería una empresa que me diga lo que me permite hacer, me gustaría hacer aplicaciones para el iPhone! Mi punto es que se puede hacer y sería genial saber cómo. Estoy dispuesto a aceptar el riesgo de que algún día mi aplicación deje de funcionar y mis ingresos de esa aplicación en particular disminuirán a cero (estoy vendiendo más de una aplicación). – katzoft

+0

hey @CommonsWare, sé que este es un hilo muy viejo, pero ¿hay alguna forma de abrir la intención de un mensaje específico hoy en día? –

+0

@NiteshSingh: dado que no sé cómo su aplicación tendría un identificador para un mensaje de correo electrónico específico, no puedo responder eso. – CommonsWare

Cuestiones relacionadas