Не могу сохранить изображение в галерею - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь сохранить растровое изображение как изображение в памяти телефона с помощью MediaStore следующим образом:

 MediaStore.Images.Media.insertImage(contentResolver, bitmap, "title" , "description")

Изображение не было сохранено в памяти устройства, я проверил как на эмуляторе, так и на физических устройствах.


Что я сделал до сих пор:

  • Проверено, что передаваемый мною битовый массив - это мой требуемый битовый массив:

    Для этого я проверил его значение с помощью отладчика следующим образом:

    1) Поместите точку останова на строку, которая должна сохранить изображение, и проверьте, какое растровое изображение яПрохожу, растровое изображение было таким же, которое я хотел сохранить:

    enter image description here

    2) Вот как выглядит растровое изображение:

enter image description here

  • Убедился, что разрешение на запись файлов во внешнее хранилище (строканиже) предоставлено от пользователя

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  • Убедитесь, что изображение не было сохраненоКонец галереи или в любом другом месте внутри устройства хранения


Я знаю, что, вероятно, я могу сохранить изображение без использования MediaStore, как упомянуто в этой теме но я хочу знать, что я делаю здесь неправильно и почему я не могу сохранить растровое изображение как изображение в памяти устройства.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Почему-то даже после того, как WRITE_EXTERNAL_STORAGE было предоставлено, после просмотра логов я заметил, что получаю эту ошибку:

Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=11218, uid=10079 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()

Это выглядело странно, потому что я проверил этоэто разрешение было получено до сохранения изображения в галерее.

Для меня было решено удалить приложение и заново установить его

0 голосов
/ 27 сентября 2019

Я попробовал это, но у меня тоже не получилось.Поэтому я использовал Android Download Manager, который прост и удобен; -)

Вот код

/*
This method can be used to download an image from the internet using a url in Android. This use Android Download Manager to
download the file and added it to the Gallery. Downloaded image will be saved to "Pictures"
Folder in your internal storage
*/

private void downloadImageNew(String filename, String downloadUrlOfImage){
    try{
        DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
        Uri downloadUri = Uri.parse(downloadUrlOfImage);
        DownloadManager.Request request = new DownloadManager.Request(downloadUri);
        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
                .setAllowedOverRoaming(false)
                .setTitle(filename)
                .setMimeType("image/jpeg") // Your file type. You can use this code to download other file types also.
                .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
                .setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES,File.separator + filename + ".jpg");
        dm.enqueue(request);
        Toast.makeText(this, "Image download started.", Toast.LENGTH_SHORT).show();
    }catch (Exception e){
        Toast.makeText(this, "Image download failed.", Toast.LENGTH_SHORT).show();
    }
}
...