2016-04-08 41 views
0

メールの意図に複数の画像を追加しようとしています。これは私が使ってきたコードです。画像はメールに添付されていません

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を使用するその他のものを読んだが、それは私に、アクションを実行できるアプリケーションを持っていないことを知らせる空のピッカーを与える。

なぜ機能しないのですか?

答えて

0

ソリューションは、私の最初の行は、今のように見えるようACTION_SEND_MULTIPLEsetType("text/plain")を、使用していた

final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE).setType("text/plain") 
0

私は、複数のストリームをサポートしていない電子メールの意図

ACTION_SENDに複数の画像を追加しようとしています。 ACTION_SEND_MULTIPLE does。だから、ACTION_SENDアプリはしようとしたときEXTRA_STREAMを取得するには、どちらか彼らはgetParcelableArrayListExtra()または同等を呼び出すことはありませんので、彼らはUri、ないParcelableオブジェクトのArrayListする値を期待しているので、彼らは、クラッシュしたり、バックnullを取得します。

このメソッドを使用する回答と、Intent.ACTION_SEND_MULTIPLEを使用する回答を読んだことがありますが、これはアクションを実行できるアプリがないことを示す空の選択です。

これは、明らかに操作を実行できるアプリがないためです。アプリがACTION_SENDをサポートしているからといって、彼らがACTION_SEND_MULTIPLEをサポートしなければならないわけではありません。

+0

Gmailは、複数をサポートすることができませんか? –

+0

@CodyHarness:どうやら、setDataAndType()を呼び出してあなたのコンテンツのMIMEタイプを指定すれば、あなたの助けになるでしょう。代わりに 'setType()'を呼び出すように誘惑されるかもしれませんが、あなたがコンストラクタで提供している 'Uri'を消去します。 – CommonsWare

関連する問題