Domanda

ho trovato un modo per inviare e-mail di testo utilizzando intento:

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new     
String[]{"example@mail.com"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test");

Ma ho bisogno di inviare HTML testo formattato.
Cercando di setType ( "text / html") non funziona.

È stato utile?

Soluzione

È possibile passare il testo Spanned nel supplementare. Per garantire che l'intento risolve solo alle attività che gestiscono e-mail (ad esempio Gmail e applicazioni e-mail), è possibile utilizzare ACTION_SENDTO con un inizio Uri con lo schema mailto. Questo funziona anche se non si conosce il destinatario in anticipo:

final Intent shareIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
shareIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
    .append("<p><b>Some Content</b></p>")
    .append("<small><p>More content</p></small>")
    .toString())
);

Altri suggerimenti

Questo è stato molto utile per me per il codice HTML, ma l'ACTION_SENDTO non ha funzionato per me, come è - ho ricevuto un messaggio di una "azione non supportato". Ho trovato qui una variante che fa:

http: //www.coderanch. com / t / 520.651 / Android / cellulare / no-application-eseguire-azione-quando

Ed ecco il mio codice che unisce le due cose insieme:

String mailId="yourmail@gmail.com";
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, 
                                Uri.fromParts("mailto",mailId, null)); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
// you can use simple text like this
// emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Body text here"); 
// or get fancy with HTML like this
emailIntent.putExtra(
         Intent.EXTRA_TEXT,
         Html.fromHtml(new StringBuilder()
             .append("<p><b>Some Content</b></p>")
             .append("<a>http://www.google.com</a>")
             .append("<small><p>More content</p></small>")
             .toString())
         );
startActivity(Intent.createChooser(emailIntent, "Send email..."));

Non ho (ancora) ha iniziato lo sviluppo di Android, ma il documentazione per l'intento dice che se si utilizza EXTRA_TEXT, il tipo MIME dovrebbe essere text / plain. Sembra che se si vuole vedere HTML, che avrebbe dovuto usare EXTRA_STREAM invece ...

cercato di inviare html tramite Gmail app per un po ', così abbiamo deciso di lasciare un po' di comprensione su quello che ho trovato, nel caso in cui qualcun altro sta avendo problemi simili.

Sembra che non importa quello che ho fatto, non ho potuto ottenere il codice HTML di avere il testo in grassetto in esso. Poi ho cercato di passare a client Outlook e con mia sorpresa che stava lavorando bene. markup HTML è stato anche lavorando su altri dispositivi meno recenti, ma non sulla mia (galassia S7 API 26), così ho pensato, l'app Gmail sembra aver cessato il supporto per la sintassi HTML che viene da dolo o forse ora ti viene richiesto di fornire in qualche modo molto specifico che non è chiaramente documentato.

Ultima versione di Gmail che ha lavorato per me era la versione 6.9.25 ... su Nexus 5X API 25 emulatore (Torrone) E ha smesso di funzionare a partire versione 7.5.21 ... Su Nexus 5x API 26 emulatore (Oreo)

È necessario per cambiare "EXTRA_TEXT" per "EXTRA_HTML_TEXT"

https://developer.android.com/reference/android /content/Intent.html#EXTRA_HTML_TEXT

Che dire solo cercando di aggiungere un po 'HTML nell'area di testo?

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "<strong>Test</strong>");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top