Попытка открыть SD-карту Android с помощью HTML, Javascript и Phonegap

Я пытаюсь открыть SD-карту и загрузить файл в Android с помощью Phonegap. Ниже приведен код, в котором я добавляю содержимое SD-карты в свой HTML, но ничего не отображается. Я использую cordova.js, jquery1.7.1.js. Ниже мой код:

Мой Javascript:

function onDeviceReady() {
    getFileSystem();
}

function getFileSystem() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
        function(fileSystem) { // success get file system
            root = fileSystem.root;
            listDir(root);
        }, 
        function(evt) { // error get file system
            console.log("File System Error: "+evt.target.error.code);
        }
    );
}

function listDir(directoryEntry) {
    if (!directoryEntry.isDirectory) 
        console.log('listDir incorrect type');

    $.mobile.showPageLoadingMsg(); // show loading message

    currentDir = directoryEntry; // set current directory
    directoryEntry.getParent(
        function(par) { // success get parent
            parentDir = par; // set parent directory
            if ((parentDir.name == 'sdcard' && currentDir.name != 'sdcard') || parentDir.name != 'sdcard') 
                $('#backBtn').show();
        }, 
        function(error) { // error get parent
            console.log('Get parent error: ' + error.code);
        }
    );

    var directoryReader = directoryEntry.createReader();
    directoryReader.readEntries(
        function(entries) {
            var dirContent = $('#dirContent');
            dirContent.empty();

            var dirArr = new Array();
            var fileArr = new Array();
            for (var i=0; i < entries.length; ++i) { // sort entries
                var entry = entries[i];
                if (entry.isDirectory && entry.name[0] != '.') 
                    dirArr.push(entry);
                else if (entry.isFile && entry.name[0] != '.') 
                    fileArr.push(entry);
            }

            var sortedArr = dirArr.concat(fileArr); // sorted entries
            var uiBlock = ['a','b','c','d'];

            for (var i=0; i < sortedArr.length; ++i) { // show directories
                var entry = sortedArr[i];
                var blockLetter = uiBlock[i%4];
                //console.log(entry.name);
                if (entry.isDirectory)
                    dirContent.append('<div class="ui-block-' + blockLetter + '"><div class="folder"><p>' + entry.name + '</p></div></div>');
                else if (entry.isFile)
                    dirContent.append('<div class="ui-block-' + blockLetter + '"><div class="file"><p>' + entry.name + '</p></div></div>');
            }
            $.mobile.hidePageLoadingMsg(); // hide loading message
        }, 
        function(error) {
            console.log('listDir readEntries error: ' + error.code);
        }
    );
}

person user1051599    schedule 06.04.2012    source источник


Ответы (1)


Вы смотрели документы Cordova API? Я попробовал этот пример кода, и он работал нормально. Ссылка на API и пример кода

person Jack    schedule 06.04.2012
comment
Я пробовал, что также SD-карта не открывается. Мне не нужен доступ к файлу, мне нужно получить доступ к SD-карте и выбрать файл для загрузки... - person user1051599; 06.04.2012
comment
Может это что-то для вас? stackoverflow.com/ вопросы/9940667/ - person Jack; 06.04.2012