0

react-native-fetch-blobFile System APIを使用しています。ギャラリーに保存されている画像は、電話機の再起動時にのみ表示されます - リアクションネイティブAndroid

私はサーバーから画像をリクエストし、base64を受信し、それをアンドロイドの画像ディレクトリに保存します。

は、私はこのようなイメージを保存します。

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を。

答えて

2

Androidでは、ギャラリーに画像を表示するには、そのファイルで「メディアスキャナ」を使用する必要があります。反応するネイティブ・フェッチ・ブロブは、ギャラリーは、メディア・データベースからコンテンツ-sのそれを取得し、この

fs.scanFile(path_of_the_file) 

document

+0

に記載されているように、あなたがそうmediadbに自分自身を画像を追加することができ、ディレクトリを分析するために、メディアスキャナを依頼することができます!ありがとうございました! – Larney

1

のためのAPIを提供していません。メディアスキャナはファイルシステムを分析し、それに応じてメディアDBを更新する。 mediascannerが新しいイメージを見つけ出すまでには時間がかかることがあります。

+0

フィードバックをありがとうが、私は反応ネイティブアンドロイドのソリューションを探していた。 – Larney

関連する問題