Изменить корневой путь файловой системы PhoneGap

Мне интересно, есть ли способ изменить объект файловой системы PhoneGap?

В настоящее время я использую Web Marmalade (который включает в себя модифицированный PhoneGap), а window.requestFileSystem(LocalFileSystem.PERSISTENT...) возвращает «wm», а не что-то вроде «/mnt/sdcard» на моем телефоне Android. Это вызывает проблемы, потому что я не могу писать в /mnt/sdcard — будет ошибка безопасности, скорее всего потому, что /mnt/sdcard не является частью корневой файловой системы «wm».

Так что мне просто интересно, есть ли простой способ изменить эту файловую систему? Я пробовал что-то вроде:

var root = new DirectoryEntry('myroot', '/mnt/sdcard');
var fileSystem = new FileSystem('myfs', root);

Но это, кажется, не помогает:

alert('fileSystem.root.fullPath: ' + fileSystem.root.fullPath);  //returns ""

person chaindriver    schedule 20.08.2012    source источник


Ответы (1)


Вы можете просто сделать:

var myRoot = null;
function myRoot() {
    window.resolveLocalFileSystemURI("/mnt/sdcard", function(dirEntry) {
      myRoot = dirEntry;
    });
}

чтобы получить объект DirectoryEntry, который представляет /mnt/sdcard, и выполнять с ним операции File API.

person Simon MacDonald    schedule 20.08.2012
comment
Спасибо за ответ Саймон. Я пробовал и получил ошибку безопасности (FileError.SECURITY_ERR), о которой я говорил... - person chaindriver; 20.08.2012
comment
Убедились ли вы, что добавили разрешение на запись во внешнее хранилище в файл AndroidManifest.xml? Кроме того, я понятия не имею, что такое Web Marmalade. - person Simon MacDonald; 20.08.2012
comment
Да, разрешение было добавлено во время теста. Я думаю, что эта проблема специфична для Web Marmalade. Marmalade — это кроссплатформенный движок приложения C++, а Web Marmalade — это версия, в которую интегрирована модифицированная версия PhoneGap для разработки HTML5/JS/CSS3. Тем не менее, спасибо за ответы, Саймон! Я вижу ваши ответы во многих других вопросах PhoneGap, это очень полезно. - person chaindriver; 21.08.2012