保存到图库的图片仅在手机重启时显示- React-Native Android



我使用的是react-native-fetch-blob库中的文件系统API。

我从服务器请求一个图像,接收一个base64,然后我把它保存到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的图库中查看图像而无需重新启动模拟器?


<标题> 解决方案

我在文件创建后将此添加到上述方法中:

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)
文档

图库从媒体数据库中获取其内容。媒体扫描程序分析文件系统并相应地更新媒体数据库。可能需要一些时间,直到媒体扫描程序找到您的新图像。

  • 你可以要求媒体扫描器分析你刚刚保存图像的目录,如如何在android
  • 中运行媒体扫描器所述。
  • 或者您可以按照https://stackoverflow.com/a/38383848/519334
  • 中的说明自行将图像添加到媒体中。

相关内容

  • 没有找到相关文章

最新更新