2010-08-28 6 views
6

Sto cercando di aprire una e-mail a livello di codice individuale in Gmail su Android.Come aprire un particolare messaggio/conversazione in Gmail

So che può essere fatto perché le notifiche integrate ti inviano a un messaggio quando fai clic su di esse e c'è un'app sul mercato chiamata Gmail Notifier che fa altrettanto.

Quello che ho provato finora:

-Inviare un intento ACTION_VIEW con il messaggio URI come dati (fallito - non può risolvere URI)

-Inviare l'intenzione di aprire HtmlConversationActivity nel pacchetto di Gmail (fallito - "richiede l'autorizzazione: null")

sarebbe utile aggiungere bandiere o una categoria per l'intento? Se sì, quale/i?

So che l'app Gmail non è ben documentata, ma mi fa impazzire che c'è sicuramente un modo per farlo e non riesco proprio a capirlo!

P.S .: Questa è la prima volta che sto postando su StackOverflow, quindi mi scuso in anticipo se ho ignorato ogni convenzione.

risposta

8

Potrebbe essere possibile, ma Google ha fatto in modo che fosse impossibile. Ho trascorso un paio di ore cercando di farlo funzionare:

  1. tirato il Gmail.apk dal mio telefono radicata.
  2. Lo ha decompilato usando apktools.
  3. è andato oltre la manifest.xml

2 attività sembrano essere utile per esso:

attività android: theme = "@ Android: Stile/Theme.Light.NoTitleBar" android: label = "@ string/activity_conversation" android: name = "HtmlConversationActivity" Android: configChanges = "keyboardHidden | orientamento"

e

attività android: label = "@ string/activity_search" android: name = "SearchActivity"

Entrambi non hanno filtri intento per cui non è possibile chiamare. se si tenta otterrete

Permesso Denial: a partire Intent {agire = android.intent.action.VIEW FLG = 0x10000000 CMP = com.google.android.gm/.HtmlConversationActivity} dal ProcessRecord {40b7d248 26043: bobina.gmailresearch/10154} (pid = 26043, uid = 10154) richiede nullo

Potrebbe essere possibile utilizzando il com.google.android.gm.ConversationListActivity. Ma il codice deve essere offuscato e non mi preoccupai di ottenere il codice sorgente del Gmail.apk per verificare che le bandiere usano ...

EDIT: Beh OK mi preoccupai di controllare, e sorprendente abbastanza Google non ha offuscato la loro app Gmail :) Quindi sono stato in grado di ottenere il codice sorgente dell'APK. Ho scavato e questo è quello che ho trovato ...

L'attività rilevante è ConverstaionListActivity.

Nel manifest.XML ha questo filtro intento:

azione androide: name = "android.intent.action.SEARCH" />

Come ho ispezionato il codice per la attività Ho scoperto che ci sono 3 stringhe attese per ottenere come extra:

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

In ogni caso. linea del pulsante, non è possibile aprire una conversazione specifica. ma puoi passare una query di ricerca che visualizzerà solo la tua conversazione specifica da tutte le mail che l'utente ha.

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

questo non sembra funzionare più. Ho appena provato. Qualcuno ha avuto qualche successo con questo? – Enigma

+0

Sì, questo non funziona più ... –

1

Sto tentando di aprire a livello di programmazione una singola e-mail nell'app Gmail su Android.

Non vi sono documentate e supportate Intents per lavorare con l'applicazione Gmail. Gli sviluppatori non dovrebbero essere strettamente integrati con questa applicazione - se Google volesse tale integrazione, avrebbero documentato e supportato tale integrazione, come hanno fatto con i contatti.

+3

sapevo che l'avresti detto, ma se volevo una società per dirmi che cosa mi è permesso di fare, mi piacerebbe fare applicazioni per iPhone! Il mio punto è che si può fare e sarebbe bello sapere come. Sono disposto ad accettare il rischio che un giorno la mia app smetterà di funzionare e il mio reddito da quella particolare applicazione scenderà a zero (sto vendendo più di una app). – katzoft

+0

hey @CommonsWare, so che questo thread è molto vecchio, ma c'è comunque l'intenzione di aprire un messaggio specifico ora a un giorno. –

+0

@NiteshSingh: Poiché non so come la tua app abbia un identificatore per uno specifico messaggio di posta elettronica, non posso rispondere. – CommonsWare

Problemi correlati