2013-04-04 11 views
8

Chcę wysłać pocztę html z mojej aplikacji. Wiem, że nie wszyscy klienci poczty umożliwiają znaczniki html. Ale znalazłem stałą Intent.EXTRA_HTML_TEXT w API (http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT).wysyłanie wiadomości e-mail, jeśli aplikacja pozwala

Mój kod wygląda tak, ale to pokazuje zawsze tylko tekst, a nie html sformatowany tekst cokolwiek klienta poczty używam:

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:")); 

Więc gdzie jest błąd?

+0

Możliwy duplikat http://stackoverflow.com/questions/2544141/send-html-mail-using-android-intent? rq = 1 – razielsarafan

+1

Nie, to nie jest duplikat. W tym poście jest tylko pytanie, jak publikować tagi HTML w konkretnym kliencie poczty (np. Gmail). To działa dla mnie dobrze. Potrzebuję alternatywnego rozwiązania: weź intencję "EXTRA_TEXT", jeśli klient poczty nie obsługuje znaczników html (np. Gmx), i weź intencję "EXTRA_HTML_TEXT", jeśli klient poczty obsługuje znaczniki html (np. Gmail). Jak mogę rozwiązać ten problem? A co jest nie tak z moim kodem? – owe

+0

Czy naprawdę nikt już tego nie próbował? Doceniam każdą podpowiedź. Dzięki – owe

Odpowiedz

4

Niestety, nie jest to odpowiedź pozytywna, ponieważ nie wydaje się działać, przynajmniej nie w sposób, który jest naprawdę uniwersalny i niezawodny. Niektóre programy pocztowe są zadowoleni z tego:

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

Należy pamiętać, że nie trzeba nowego EXTRA_HTML_TEXT, współpracuje ze starszą, jak również. Jeśli obejmuje to wszystko, czego potrzebujesz, możesz być w porządku. Ale jeśli chcesz również zająć się wieloma innymi potencjalnymi odbiornikami, takimi jak Facebook, Skype, a nawet aplikacjami typu Drive lub Keep, niestety nie mogłem znaleźć idealnego rozwiązania, ale bardzo chciałbym, aby udowodniono, że jest to złe.

Zasadniczo mamy trzy różne formaty:

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

i dwóch możliwych odbiorców:

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

Próbowałem wszystkich możliwych kombinacji, ale w żadnym z nich, będzie kilka dobrze znanych i szeroko używana aplikacja, która nie chce ładnie grać. Albo osadzimy tagi HTML, albo nie sformatujemy, albo nawet nie wpisujemy żadnego tekstu ...

+1

to samo ze mną ... jakiejkolwiek aktualizacji? –

Powiązane problemy