2013-04-04 9 views
8

Desidero inviare una mail html dalla mia applicazione. So che non tutti i client di posta consentono i tag html. Ma ho trovato la costante Intent.EXTRA_HTML_TEXT nell'API (http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT).invio di posta html se l'app consente

Il mio codice simile a questo, ma mostra sempre e solo il testo e non il formato HTML client di posta elettronica di testo tutto ciò che uso:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, "Hello World"); 
intent.putExtra(Intent.EXTRA_HTML_TEXT, "<html><body><h1>Hello World</h1></body><html>"); 

intent.setType("text/html"); // intent.setType("plain/text"); 

startActivity(Intent.createChooser(intent, "Choose Email Client:")); 

Allora, dove è l'errore?

+0

Possibile duplicato di http://stackoverflow.com/questions/2544141/send-html-mail-using-android-intent? rq = 1 – razielsarafan

+1

No, non è un duplicato. In questo post c'è solo la domanda su come postare tag html in un client di posta specifico (ad esempio, gmail). Questo funziona per me bene. Ho bisogno di una soluzione alternativa: prendi l'intento "EXTRA_TEXT" se il client di posta non supporta i tag html (ad esempio gmx) e prendi l'intento "EXTRA_HTML_TEXT" se il client di posta supporta i tag html (ad esempio, gmail). Quindi, come posso risolvere questo problema? E cosa c'è di sbagliato nel mio codice? – owe

+0

Non c'è nessuno che abbia già provato questo? Apprezzo qualsiasi suggerimento. Grazie – owe

risposta

4

Siamo spiacenti, non è una risposta positiva perché non sembra funzionare, almeno non in un modo veramente universale e affidabile. Alcuni programmi di posta sono contento di questo:

String body = "<html>something</html>"; 
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body)); 

Si noti che non è necessario il nuovo EXTRA_HTML_TEXT, funziona con il più anziano pure. Se questo copre tutto il necessario allora potresti essere OK. Ma se vuoi anche indirizzare molti altri possibili destinatari di intenti come Facebook, Skype o persino app come Drive o Keep, sfortunatamente non sono riuscito a trovare una soluzione perfetta, ma mi piacerebbe molto essere smentito.

Fondamentalmente, abbiamo tre diversi formati:

String body = "<html>something</html>"; 
Spanned html = Html.fromHtml(body); 
String stripped = html.toString(); 

e due possibili riceventi:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
    intent.putExtra(Intent.EXTRA_HTML_TEXT, ???); 
intent.putExtra(Intent.EXTRA_TEXT, ???); 

Ho provato tutte le combinazioni possibili, ma in qualsiasi di questi, ci saranno alcuni ben noti e ampiamente App usata che non vuole giocare bene. O otteniamo tag HTML incorporati, o nessuna formattazione, o addirittura nessun testo ...

+1

stesso con me ... qualche aggiornamento? –