2

複数のファイルを添付してメールを送信しようとしていますが、メールに追加できません。私はこのように進めます:

private void SendMail (List<Data> ToSend)
    {
        var Attachments = new List<Android.Net.Uri>();
        Intent i = new Intent (Android.Content.Intent.ActionSendMultiple);
        i.SetType ("message/rfc822");
        i.PutExtra (Android.Content.Intent.ExtraEmail, new String[]{"try@mail.com"});
        i.PutExtra (Android.Content.Intent.ExtraSubject, "Test");
        i.PutExtra (Android.Content.Intent.ExtraText, "Test Test...");
        foreach (var content in ToSend) {
            Java.IO.File myFile = new Java.IO.File(content.attachmentloc);
            // attachmentloc is a string containing the absolute path to the file to attach.
            var uri = Android.Net.Uri.FromFile(myFile);
            Attachments.Add (uri);
        }
        i.PutParcelableArrayListExtra(Android.Content.Intent.ExtraStream, Attachments.ToArray());
        StartActivityForResult(Intent.CreateChooser(i, "Send mail..."), 0);
    }

チェックしたところ、文字列内のパスは適切です。ただし、メソッド.Exists(foreachのJava.IO.Fileで使用した場合)はfalseを返します。理由かもしれませんか?

助けてくれてありがとう。

編集:

添付ファイルを1つ追加しようとすると、問題なく機能します。ただし、複数の添付ファイルがあることを意味する関数を呼び出すと、失敗します。

別名:

Intent i = new Intent (Android.Content.Intent.ActionSend);
var uri = Android.Net.Uri.Parse (ex._FileLocation);
i.PutExtra(Intent.ExtraStream, uri);

正常に動作しますが、置き換えます

    Intent i = new Intent (Android.Content.Intent.ActionSend);

    Intent i = new Intent (Android.Content.Intent.ActionSendMultiple);

同じ失敗につながり、交換も同様に失敗します。

var uri = Android.Net.Uri.Parse (ex._FileLocation);
i.PutExtra(Intent.ExtraStream, uri);

var Attachments = new List<Android.Net.Uri> ();
                foreach (var ex in ToSend) {
                var uri = Android.Net.Uri.Parse (ex._FileLocation);
                Attachments.Add (uri);
                //o
            }
            i.PutParcelableArrayListExtra (Android.Content.Intent.ExtraStream, Attachments.ToArray ());

...デフォルトのメールアプリケーション(Gmailではない)を使用しています。また、他の場所で提案されているように、インテントタイプを "* / *"(スペースなし)に設定してみました。AddFlags(ActivityFlags.GrantReadUriPermission);も試してみました。

単一の添付ファイルで機能するため、URIが確実に有効であることを私は知っています...

本当に助けが必要です。

4

2 に答える 2

2

私は個人的にこの問題に対する有効な答えを見つけられませんでした。私が見つけた唯一の答えは回避策です。すべてのファイルを単一の.zipアーカイブに圧縮し、そのアーカイブを単一の添付ファイルとして送信します。

于 2013-02-27T22:49:34.930 に答える
0

おそらく、メールアクティビティにはファイルを読み取るための十分な権限がありません。ファイルを作成するとき、または添付ファイル配列に追加する前に、ここでmyFile.setReadable(true、false)を追加してみてください。

于 2013-02-22T10:38:17.723 に答える