メールの意図に複数の画像を追加しようとしています。これは私が使ってきたコードです。画像はメールに添付されていません
final ArrayList<Uri> uris = new ArrayList<>();
for (int i = 0; i < form.getImageContainers().size(); i++)
uris.add(Uri.fromFile(new File(form.getImageContainers().get(i).getImagePath())));
final Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
.putExtra(Intent.EXTRA_EMAIL, "[email protected]")
.putExtra(Intent.EXTRA_SUBJECT, "Sample Submission (Beta Test)")
.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(buildBody()));
.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
しかし、本文には何も付いていません。その他のものはすべて移動します。
私はこのライン
.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(form.getImageContainers().get(0).getImagePath())));
で.putParcelableArrayListExtra
を置き換えることにより、単一の画像を取得しようと、それは、画像を添付しましたので、私はパスを格納する文字列と間違って何もない伝えることができます。残念ながら、最後のもの(試したもの)だけを使用するので、私はループして各画像にその行を使用することはできません。私はこのメソッドを使用する答えと、Intent.ACTION_SEND_MULTIPLE
を使用するその他のものを読んだが、それは私に、アクションを実行できるアプリケーションを持っていないことを知らせる空のピッカーを与える。
なぜ機能しないのですか?
Gmailは、複数をサポートすることができませんか? –
@CodyHarness:どうやら、setDataAndType()を呼び出してあなたのコンテンツのMIMEタイプを指定すれば、あなたの助けになるでしょう。代わりに 'setType()'を呼び出すように誘惑されるかもしれませんが、あなたがコンストラクタで提供している 'Uri'を消去します。 – CommonsWare