如何在Android应用程序空间中存储和检索文件?

时间:2014-03-27 16:01:26

标签: android cordova local-storage

我正在开发一个cordova / phonegap应用程序。现在,我正在测试Android上的应用程序。

如果我默认包含文件(音频,视频,...),我可以访问指示" url"例如audio / filesong.mp3或video / filevideo.mp4。

但如果我用下一个代码下载文件:

function downloadFile() {
    var fileTransfer = new FileTransfer();
    var uri = encodeURI("UrlOfTheFile");
    var fileURL = "cdvfile://localhost/persistent/appcustomstorage/";
    fileTransfer.download(
    uri, fileURL + "file.extension", function(entry) {
        console.log("download complete: " + entry.toURL());
    }, function(error) {
        console.log("download error source " + error.source);
        console.log("download error target " + error.target);
        console.log("upload error code" + error.code);
    }, false, {
        headers: {
            "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
        }
    });
}

我在StorageRoot / appcustomstorage / file.extension

下载该文件

可以将文件存储在应用包中,例如,在Android / data / com.example.app中。 或者获取Android / data / com.example.app网址然后添加必要文件夹的方法?

解决方案: 在这种情况下,我发现设备中的所有mp3。它适用于Nexus 4。

的index.html

<ul data-role="listview" data-inset="true" id="ulsongs">
        </ul>

索引JavaScript:

document.addEventListener("deviceready", onDeviceReady, false);

// device APIs are available
function onDeviceReady() {
   window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}


function gotFS(fileSystem) {
   FileSystem = fileSystem;
   // Call to start to find all files
   getFileSystem();
}

storageScript:

   var FileSystem = null;
   var AudioExtensions = [ '.mp3' ];// , '.wav', '.m4a' ];
   var my_media = null;
   function listDir(directoryEntry, level) {
    if (level === undefined)
        level = 0;
    var directoryReader = directoryEntry.createReader();

    directoryReader.readEntries(function(entries) { // success get files and
        // folders
        for ( var i = 0; i < entries.length; ++i) {
            if (entries[i].name === '.')
                continue;
            if (entries[i].isDirectory) {    
                FileSystem.root.getDirectory(entries[i].fullPath.slice(1,
                        entries[i].fullPath.length), {
                    create : false
                }, function(dirEntry) {
                    listDir(dirEntry, level + 1);
                }, function(error) {
                    console.log('ERROR');
                    alert(error.code);
                });
            }
            if (entries[i].isFile) {

                var extension;
                extension = entries[i].name.substr(entries[i].name
                        .lastIndexOf('.'));
                if (entries[i].isFile === true
                        && $.inArray(extension, AudioExtensions) >= 0) {

                    // Add a song to the list
                    $("#ulsongs").append(
                            "<li id='" + entries[i].fullPath + "'"
                                    + " data-icon=\"audio\"><a>"
                                    + entries[i].name + "</a></li>");
                    $('#ulsongs').listview('refresh');
                }
            }
        }
    }, function(error) { // error get files and folders
        alert('Error. Code: ' + error.code);
    });

    // Action listener
    $('#ulsongs li').click(function(e) {
        pathsong = $(this).attr('id');
        console.log('item clicked. Path: ' + pathsong);
        if (typeof (pathsong) != 'undefined' && pathsong != null) {
            // Stop previous song
            if ((audio_status != null) && (audio_status == 2)) {
                console.log('STOP AUDIO');
                my_media.stop();
                my_media.release();
            }

            // Play the audio file at url
            my_media = new Media(pathsong,
            // success callback
            function() {
                console.log("playAudio():Audio Success");
            },
            // error callback
            function(err) {
                console.log("playAudio():Audio Error: " + err);
            }, status);

            // Play audio
            my_media.play();
        }
    });
}

var audio_status = null;
function status(stat) {
    audio_status = stat;
}

/**
 * 
 */
function getFileSystem() {
    console.log('entra getFileSystem');
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
            function(fileSystem) { // success get file system
                var sdcard = fileSystem.root;
                sdcard.getDirectory('', {
                    create : false
                }, function(dirEntry) {
                    listDir(dirEntry);
                }, function(error) {
                    alert(error.code);
                })
            }, function(evt) { // error get file system
                console
                        .log('ERROR GETTING FILE SYSTEM'
                                + evt.target.error.code);
            });
}

我创建了一个mp3列表。 我使用jQuery和jQueryMobile

修改 这个过程可能需要一些时间。建议显示加载弹出窗口。

0 个答案:

没有答案