Сохранение растрового изображения в галерее в Android - PullRequest
1 голос
/ 23 апреля 2019

Я думал, что это должно быть просто, но я не могу понять это.Я получаю сообщение об ошибке: System.IO.DirectoryNotFoundException: Could not find a part of the path "/storage/emulated/0/Pictures/Screenshots/name.jpg".

Код:

string root = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).Path;
File myDir = new File(root + "/Screenshots");
myDir.Mkdirs();

string timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").Format(new Date());
string fname = CommunicationHandler.GetNickname() + "|" + timeStamp + ".jpg";

File file = new File(myDir, fname);
if (file.Exists())
    file.Delete();
try
{
    using (System.IO.Stream outStream = System.IO.File.Create(file.Path))
        {
            finalBitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, outStream);
            outStream.Flush();
            outStream.Close();
        }
}
catch (Exception e)
{
    Toast.MakeText(Activity, e.ToString(), ToastLength.Long).Show();
}

Кроме того, я не могу получить доступ к /storage/emulated/0..

* 1008 вручную* У кого-нибудь есть идея?

РЕДАКТИРОВАТЬ !!!: мне пришлось перейти к настройкам приложений и вручную настроить разрешения, теперь ничего не падает и кажется, что работает, но я не могу найти изображение вгалерея.

Так что теперь вопросы ... Как я должен начать сканирование, чтобы изображение появилось в галерее?

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Если вы хотите создать новый каталог, вы можете использовать System.IO.Directory.CreateDirectory(root); для его создания.

//create a directory called MyCamera
    string root = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDcim).ToString() + "/MyCamera/";

   //create the Directory
    System.IO.Directory.CreateDirectory(root);
0 голосов
/ 23 апреля 2019

Как взято из здесь :

MediaScannerConnection.scanFile(this, new String[]{file.toString()}, null,
    new MediaScannerConnection.OnScanCompletedListener() {
        public void onScanCompleted(String path, Uri uri) {
            Log.i("ExternalStorage", "Scanned " + path + ":");
            Log.i("ExternalStorage", "-> uri=" + uri);
        }
    });
}

Также обратите внимание, что вы можете просто добавить изображение в галерею с помощью простой строки:

MediaStore.Images.Media.insertImage(applicationContext.getContentResolver(), IMAGE ,"nameofimage" , "description");
...