我想从我的应用程序发送一封html邮件。 我知道并非所有邮件客户端都允许使用html标签。 但我在API(http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT)中找到了常量Intent.EXTRA_HTML_TEXT。
我的代码看起来像这样,但它始终只显示文本,而不是html格式的文本,无论我使用的是哪个邮件客户端:
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:"));
那么错误在哪里?
答案 0 :(得分:4)
对不起,这不是一个肯定的答案,因为它似乎不起作用,至少不是一种真正普遍和可靠的方式。一些邮寄者对此表示满意:
String body = "<html>something</html>";
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body));
请注意,您不需要新的EXTRA_HTML_TEXT
,它也适用于较旧的String body = "<html>something</html>";
Spanned html = Html.fromHtml(body);
String stripped = html.toString();
。如果这涵盖了您所需要的一切,那么您可能没问题。但是,如果您还想要解决许多其他可能的意图接收器,如Facebook,Skype甚至像Drive或Keep这样的应用程序,遗憾的是,我找不到完美的解决方案,但我非常希望被证明是错误的。
基本上,我们有三种不同的格式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
intent.putExtra(Intent.EXTRA_HTML_TEXT, ???);
intent.putExtra(Intent.EXTRA_TEXT, ???);
和两个可能的收件人:
{{1}}
我尝试了所有可能的组合,但在其中任何一种,都会有一些众所周知且广泛使用的应用程序,不想玩得很好。我们要么嵌入HTML标签,要么没有格式化,甚至根本没有文字......