11

アプリケーションからhtmlメールを送信したい。すべてのメール クライアントが html タグを許可しているわけではないことはわかっています。しかし、API で定数 Intent.EXTRA_HTML_TEXT を見つけました ( http://developer.android.com/reference/android/content/Intent.html#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));

新しい は必要ないことに注意してくださいEXTRA_HTML_TEXT。古いものでも機能します。これで必要なものがすべてカバーされていれば、問題ないかもしれません。しかし、Facebook、Skype、さらには Drive や Keep などのアプリのような他の多くのインテント レシーバーにも対処したい場合は、残念ながら完璧な解決策を見つけることができませんでしたが、間違っていることを証明したいと思います.

基本的に、3 つの異なる形式があります。

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

および 2 つの可能な受信者:

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 に答える