Сохраненные изображения в галерее отображаются только при перезагрузке телефона - React-Native Android

Я использую API-интерфейс файловой системы из библиотеки act -native-fetch-blob.

Я запрашиваю изображение с сервера, получаю base64, а затем сохраняю его в папке Pictures в Android-fs.

Я сохраняю изображение так:

var RNFetchBlob = require('react-native-fetch-blob').default;

const PictureDir = RNFetchBlob.fs.dirs.PictureDir;

getImageAttachment: function(uri_attachment, filename_attachment, mimetype_attachment) {

   return new Promise((RESOLVE, REJECT) => {

   // Fetch attachment
   RNFetchBlob.fetch('GET', config.apiRoot+'/app/'+uri_attachment)
   .then((response) => {

     let base64Str = response.data;

     let imageLocation = PictureDir+'/'+filename_attachment;

     //Save image
     fs.writeFile(imageLocation, base64Str, 'base64');
     console.log("FILE CREATED!!")

    }).catch((error) => {
    // error handling
    console.log("Error:", error)
  });
},

проблема
Изображение успешно сохраняется, но когда я открываю галерею Android, оно не видно. Но когда я выключаю и включаю эмулятор Android, он появляется в Галерее.

Вопрос
Как я могу просмотреть изображение в Галерее Android без перезагрузки эмулятора?


Решение


Я добавил это к описанному выше методу после создания файла:

RNFetchBlob.fs.scanFile([ { path : imageLocation, mime : mimetype_attachment } ])
.then(() => {
  console.log("scan file success")
})
.catch((err) => {
  console.log("scan file error")
})

Спасибо тебе @Xeijp.

2 ответа

Решение

В Android, чтобы сделать изображение видимым в галерее, вы должны использовать "медиа-сканер" для этого файла. response-native-fetch-blob действительно предоставляет API для этого

fs.scanFile(path_of_the_file)

документ

Галерея получает контент из медиа-базы данных. медиа-сканер анализирует файловую систему и соответственно обновляет медиа-базу данных. Может потребоваться некоторое время, пока посредник не найдет ваше новое изображение.

Другие вопросы по тегам