複数のファイルを添付してメールを送信しようとしていますが、メールに追加できません。私はこのように進めます:
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が確実に有効であることを私は知っています...
本当に助けが必要です。