11

我想从我的应用程序发送 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:"));

那么错误在哪里呢?

4

1 回答 1

5

抱歉,这不是一个肯定的答案,因为它似乎不起作用,至少不是以一种真正普遍和可靠的方式。一些邮寄者对此感到满意:

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

请注意,您不需要 new EXTRA_HTML_TEXT,它也适用于旧的。如果这涵盖了您需要的所有内容,那么您可能会没事。但是,如果您还想解决许多其他可能的意图接收器,例如 Facebook、Skype 甚至是 Drive 或 Keep 等应用程序,不幸的是,我找不到完美的解决方案,但我非常希望被证明是错误的。

基本上,我们有三种不同的格式:

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

和两个可能的收件人:

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

我尝试了所有可能的组合,但在任何一种组合中,都会有一些众所周知且广泛使用的应用程序不想玩得很好。我们要么嵌入 HTML 标签,要么没有格式,甚至根本没有文本......

于 2013-07-27T21:57:40.787 回答