FIle API - Phonegap? - PullRequest
       2

FIle API - Phonegap?

4 голосов
/ 05 декабря 2011

Кто-нибудь может объяснить, как вывести список файлов на странице с помощью API Phonegap File для Android?

Я хотел бы перечислить все .mp3 файлы, если это возможно, но прочитал все пробелы в телефонедокументы (http://docs.phonegap.com/en/1.0.0/phonegap_file_file.md.html) и не могу понять это вообще!

Ответы [ 4 ]

11 голосов
/ 05 декабря 2011

это немного больно, но выполнимо.Начните с этого кода:

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

// PhoneGap is ready
//
function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
}

function onFileSystemSuccess(fileSystem) {
    fileSystem.root.getDirectory("Music", {create: false, exclusive: false}, getDirSuccess, fail);
}

function getDirSuccess(dirEntry) {
    // Get a directory reader
    var directoryReader = dirEntry.createReader();

    // Get a list of all the entries in the directory
    directoryReader.readEntries(readerSuccess,fail);
}

function readerSuccess(entries) {
    var i;
    for (i=0; i<entries.length; i++) {
        // Assuming everything in the Music directory is an mp3, go nuts
        // otherwise check entries[i].name to see if it ends with .mp3
    }
}

Я пишу весь этот пример кода вне среды IDE, поэтому могут быть ошибки, но это должно помочь вам.

2 голосов
/ 14 августа 2012

Вы также можете сохранить один шаг в коде Саймона, если вы просто хотите проверить концепцию, поскольку fileSystem.root уже является dirEntry (и это избавляет вас от потенциально ошибочного шага, связанного с использованием имени каталога, такого как "Музыка"который может или не может быть там):

function onFileSystemSuccess(fileSystem) {
    var directoryReader = fileSystem.root.createReader();

    // Get a list of all the entries in the directory
    directoryReader.readEntries(readerSuccess,fail);
}

function readerSuccess(entries) {
    var i;.......

, который работает для меня.

Тем не менее, я получаю содержимое корневого каталога приложения, по-видимому, мое приложение являетсяназывается be.qan.blaActivity, поэтому, если я спрашиваю его fileSystem.root.name, он говорит мне "be.qan", а fileSystem.root.path не определено.Таким образом, мой вопрос здесь будет таким: как я могу вырваться из этой песочницы, если это действительно то, в чем я сижу, и могу ли я получить доступ к каталогам sd_card или другим частям файловой системы (поскольку iOS все еще даже не имеет внешнегохранилище)?

В качестве имен файлов в readerSuccess я получаю такие имена, как «database», «app_database», «cache» и «lib», которые даже не отображаются, когда я это делаюпоиск с помощью Astro FileManager, поэтому я настоятельно полагаю, что они являются частью виртуальной файловой системы, которую Cordova создает для приложения или около того.Вероятно, мне все еще многое не хватает, и люди более знающие, чем я могу объяснить, но я догадываюсь об этом до сих пор.

2 голосов
/ 18 января 2012

Пол, вы добавили функцию fail ()?Это будет необходимо в примере кода Саймона.Пример api docs имеет:

function fail(evt) {
    console.log(evt.target.error.code);
}
0 голосов
/ 25 июня 2014

Привет, я использую этот код, и он работает для меня .. можно попробовать

$('#recordingList').on('pagecreate', function(event) {
    generateRecordingList();
});

function generateRecordingList(){
    //request for the file system 
    window.resolveLocalFileSystemURI("file:///sdcard/rem", onFileSystemSuccess, onError);
}

function onFileSystemSuccess(fileSystem){
    alert("FileSystem success : " + fileSystem.name);

}

function onError(error){
    alert(error.target.error.code);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...