Show image in gallery

Asked

Viewed 795 times

1

I am developing a mobile application with Apache Cordova, where I download some images, I can download them, but the images don’t go to the gallery. I tried to save the images inside the Pictures folder, the images only appear in my Android File Manager, when the phone is connected on the computer the images do not appear.

 function download(URL, Folder_Name, File_Name) {
        //step to request a file system 
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);

        function fileSystemSuccess(fileSystem) {
            var download_link = encodeURI(URL);
            var ext = download_link.substring(download_link.lastIndexOf('.') + 1); //Get extension of URL
            var directoryEntry = fileSystem.root; // to get root path of directory
            directoryEntry.getDirectory(Folder_Name, { create: true, exclusive: false }, onDirectorySuccess, onDirectoryFail); // creating folder in sdcard
            var rootdir = fileSystem.root;
            var fp = rootdir.toURL(); // Returns Fulpath of local directory
            fp = fp + "/" + Folder_Name + "/" + File_Name; // fullpath and name of the file which we want to give
            // download function call                
            filetransfer(download_link, fp);
        }

        function onDirectorySuccess(parent) {
            //alert("Sucesso");
        }

        function onDirectoryFail(error) {
            //Error while creating directory
            alert("Unable to create new directory: " + error.code);
        }

        function fileSystemFail(evt) {
            //Unable to access file system
            alert(evt.target.error.code);
        }
    }
        function filetransfer(download_link, fp) {
            var fileTransfer = new FileTransfer();
            // File download function with URL and local path
            fileTransfer.download(download_link, fp,
                                function (entry) {
                                    alert("download complete: " + entry.fullPath);
                                },
                             function (error) {
                                 //Download abort errors or download failed errors
                                 console.log(error);
                                 alert(error.exception);
                                 alert("download error source " + error.source);
                                 //alert("download error target " + error.target);
                                 //alert("upload error code" + error.code);
                             }
                        );
        }

1 answer

0


The images were being saved, but needed the Media Scanner to index images in the gallery

Media Scanner:

Mediascannerconnection provides a way for passing applications a media file newly created or downloaded to the scanner service media. Mediascanner service will read the file metadata and add the file to the media content provider.

As I was working with Apache Cordova/Phonegap it does not provide any native method to refresh the images in the native gallery, so I had to look for some plugin to do this work. The plugins I found were:

Cordova-mediascanner-plugin
Mediascannerplugin

Both have a basic documentation, however I used the Cordova-mediascanner-plugin.

When implementing this plugin, I only modified my method filetransfer

function filetransfer(download_link, fp) {
        var fileTransfer = new FileTransfer();
        console.log(fp);

        // File download function with URL and local path
        fileTransfer.download(download_link, fp,
                            function (entry) {
                                //alert("download complete: " + entry.fullPath);
                                window.plugins.scanmedia.scanFile(fp, function (msg) {
                                    alert("Success ScanMedia");
                                }, function (err) {
                                    alert("Fail ScanMedia: " + err);
                                })
                            },
                         function (error) {
                             //Download abort errors or download failed errors
                             console.log(error);
                             alert(error.exception);
                             alert("download error source " + error.source);
                             //alert("download error target " + error.target);
                             //alert("upload error code" + error.code);
                      }
                    );

    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.