1

添付ファイル (テキスト/プレーン) 付きのメールを送信する Android プログラムで、以前使用してIntentいた withIntent.ACTION_SENDを使用して作業を行っていましたが、複数回Intent.putParcelableArrayListExtra(android.content.Intent.EXTRA_STREAM, uri)呼び出して同じメールに複数のファイルを添付しようとすると、動作しませんでした。Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)添付ファイルはメールに表示されません。事前に感謝します

      final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
      System.out.println(emailText+emailTo);
      emailIntent.setType("text/plain");
      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,emailText);
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[]{emailTo});

      //has to be an ArrayList
      ArrayList<Uri> uris = new ArrayList<Uri>();

      //convert from paths to Android friendly Parcelable Uri's
      try
      {
            for (String file : filePaths)
            {
                File fileIn = new File(context.getFilesDir(),file);
                System.out.println(fileIn+"yes");
                Uri u =  Uri.fromFile(fileIn);
                uris.add(u);
                System.out.println(u);
            }
      emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris);
      context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
      }
4

2 に答える 2

2

ACTION_SEND の代わりに ACTION_SEND_MUTIPLE を使用する

http://developer.android.com/reference/android/content/Intent.html#ACTION_SEND_MULTIPLE

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
于 2012-05-10T11:14:09.663 に答える
0

2 番目の引数ファイルが有効なファイル名のみを指定していることを確認してください。あなたの問題はそこにあるかもしれません...

File fileIn = new File(context.getFilesDir(),file);

次のコードは問題なく動作します。

Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
//...
ArrayList<Uri> uris = new ArrayList<Uri>();
uris.add(Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath() + "/HOME/Pictures/1.png"));
uris.add(Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath() + "/HOME/Pictures/2.png"));
uris.add(Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath() + "/HOME/Pictures/3.png"));
uris.add(Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath() + "/HOME/Pictures/4.png"));
emailIntent.putParcelableArrayListExtra(android.content.Intent.EXTRA_STREAM, uris);
startActivity(emailIntent);
于 2014-03-22T10:15:00.620 に答える