Я пытался портировать старый код и пришел к методу, который записывает поток в файл перед отправкой его в виде вложения в электронное письмо.
Этот код в конечном итоге использует
var path = MediaStore.Images.Media.InsertImage(Forms.Context.ContentResolver, myBitmap, "My Bitmap", "MyBitmap.png");
чтобы сохранить файл.path
в конечном итоге становится content://media/external/images/media/164
, где 164 выглядит просто как сохраненная n-ная вещь.
Первоначально этот код не работал (только из-за разрешений, как оказалось), поэтому я попытался заменить его накакой-то нормальный C #:
string dir = Android.OS.Environment.ExternalStorageDirectory.ToString();
string filePath = System.IO.Path.Combine(dir, fileName);
using (System.IO.Stream file = System.IO.File.Create(filePath))
{
myStream.CopyTo(file);
}
и он записал файл нормально.Этот путь выглядит как /storage/emulated/0/MyBitmap.png
.
Теперь странно то, что я не могу прикрепить второй путь (/storage/emulated/0/MyBitmap.png
) к электронной почте, даже если файл существует, не пустой, кодимеет доступ для чтения, а пользователь дал разрешение.Но первый путь (content://media/external/images/media/164
) работает без проблем, хотя я и не ожидал, что он будет:
Можете ли вы сказать мне, что происходитВот?Я гуглил это и думал, что делаю так, чтобы это работало.Но для того, чтобы не только не работать, но и иметь другой способ сделать это, что не имеет смысла, работа действительно сбивает с толку.