2016-06-26 26 views
1

を事前移入私は、次の手順を実行しますメール複数の添付ファイルやメール

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { receiver }); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); // uris is a array list! 

は、それから私は、次を追加してみました:

intent.putExtra(Intent.EXTRA_TEXT, "text"); 

このそのテキスト不満ログ行は、配列リストではありません追加されます。しかし動作しますが、メールが何体

を持たず、その代わりに、私は、次の試してみました:

ArrayList<String> texts = new ArrayList(); 
for (int i = 0; i < uris.size(); i++) 
    texts.add("Test"); 
intent.putParcelableArrayListExtra(Intent.EXTRA_TEXT, texts); 

これは、ログの警告を削除しますが、電子メールはまだ身体を持っていません。メールに複数のファイルを追加し、いくつかのテキストと体を事前移入するにはどうすればよい

質問

答えて

1

メールに複数のファイルを追加し、本文にテキストを事前に埋め込むにはどうすればよいですか?

一般的に言えば、あなたはそうではありません。 the documentation for ACTION_SEND_MULTIPLEを引用

* ArrayListExtraが

を送信するデータを含む、いずれか EXTRA_TEXT または EXTRA_STREAMフィールドを持つことができます(強調追加)

あなたは両方を含めることを試みていますが、これはIntent仕様の範囲外です。

ACTION_SEND_MULTIPLEIntentの中からユーザーが選択できるアプリがたくさんあります。 Intentでこれらのアプリの機能は、それらのアプリの開発者次第です。有望な候補は以下のとおりです。

  • EXTRA_TEXT無視、あなたは両方の
  • クラッシュが恐ろしく

同じACTION_SEND(あなたが持っているいずれかのEXTRA_TEXTできるとも当てはまるEXTRA_STREAM

  • 名誉を無視
  • を見ているようまたは両方ともではなくEXTRA_STREAM)。

  • +0

    これがお手伝いします

    i.putParcelableArrayListExtra(Intent.EXTRA_STREAM, screenshotUri); startActivity(Intent.createChooser(i, "Send mail"));

    希望は...あなたは正しいように、それはまだ、これはあなたが言ったように、それは動作しませんんという意味ではありません...サポートされていないようです。私はgmail/inboxで動作するソリューションに満足しています...上記の私の試みは他の人にはうまくいくようですが、私にとっては受信トレイではうまくいきません... – prom85

    1

    ここに私のコードは、私は電子メールに複数の画像を添付するために使用されます。ここで

    Intent i = new Intent(Intent.ACTION_SEND_MULTIPLE); i.setType("image/png"); i.putExtra(Intent.EXTRA_SUBJECT, "EMAIL SUBJECT"); i.putExtra(Intent.EXTRA_TEXT, "Email Body content....");

    私は、電子メールの意図チューを送信する必要があるArrayListに2枚の画像をハードコーディングです:

    Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.slide_1); String path = MediaStore.Images.Media.insertImage(getContentResolver(), largeIcon, "title", null); Bitmap largeIcon1 = BitmapFactory.decodeResource(getResources(), R.drawable.slide_2); String path1 = MediaStore.Images.Media.insertImage(getContentResolver(), largeIcon1, "title", null); ArrayList<Uri> screenshotUri = new ArrayList<>(); screenshotUri.add(Uri.parse(path)); screenshotUri.add(Uri.parse(path1));

    ArrayList<Uri>意図方法に加えます。

    +0

    私は複数のテキストファイルを追加しています。まったく同じことを私が見る限り。 'Uri'を' ArrayList'として追加し、テキストを設定します。私のファイルをメディアストアに置くのではなく、私自身の「ContentProvider」を持っていて、アプリケーションのキャッシュディレクトリからファイルを共有しています...悲しいことに、このアプローチは私の受信ボックスアプリでは機能しません... ? – prom85

    +0

    @ prom85私はこのコードをGmailアプリに使用しました。 –

    関連する問題