保存到图库的图像仅在 phone 重新启动时显示 - React-Native Android

Saved images to Gallery only display when phone is restarted - React-Native Android

我正在使用 File System API from the react-native-fetch-blob 库。

我从服务器请求一个图像,接收一个 base64,然后我将它保存到 android fs 中的 Pictures 目录。

我这样保存图片:

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。

在 Android 中,要使图像在图库中可见,您需要对该文件使用 'media scanner'。 react-native-fetch-blob 确实为此

提供了 API
fs.scanFile(path_of_the_file)

document

图库从媒体数据库中获取内容。媒体扫描器分析文件系统并相应地更新媒体数据库。 mediascanner 可能需要一些时间才能找到您的新图片。

  • 您可以要求媒体扫描器分析您刚刚保存图像的目录,如 how to run media scanner in android
  • 中所述
  • 或者您可以按照
  • 中的说明自行将图像添加到 mediadb