2015-02-05 8 views
3

Я работаю над Android-приложением, основанным на телефонной связке 4.0 & wikitude. Я хочу создать папку на root (/ storage/emulated/0/или/storage/sdcard0, если есть SD). Кусок кода для выполнения именно:Застрял на windows.requestFileSystem

onDeviceReady: function() { 

    app.receivedEvent('deviceready'); 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
    app.wikitudePlugin = cordova.require("com.wikitude.phonegap.WikitudePlugin.WikitudePlugin"); 
    app.wikitudePlugin.isDeviceSupported(app.onDeviceSupportedCallback, app.onDeviceNotSupportedCallback); 


}, 

gotFS: function(fileSystem) { 

    alert("Got the file system: "+fileSystem.name +"<br/>" + 
      "root entry name is "+fileSystem.root.name + "<p/>"); 
    fileSystem.root.getDirectory("ARMedia", {create: true}, gotDir, fail); 

}, 

gotDir: function(dirEntry) { 

    file.entry = fileEntry; 
    alert('Folder ARMedia created!'); 
}, 

fail: function(error) { 

    alert(error); 
}, 

Проблема заключается в том, что, когда я проверяю на своих устройствах (Xiaomi MI3 и ушко галактики Samsung 2) приложение застрял на «window.requestFileSystem (LocalFileSystem.PERSISTENT , 0, gotFS, сбой);

Плагины для передачи файлов и файлов уже находятся в моей папке плагинов, у android manifest.xml есть разрешение WRITE_EXTERNAL_STORAGE, и я пробовал все почти все ... Я просто хочу знать, почему программа не работает 't пойти дальше window.requestFileSystem.

Спасибо и извините за мой плохой английский.

+0

Что вы подразумеваете под "застрявшим"? Если вы имеете в виду, что ошибка выбрасывается, то сообщите нам * что * ошибка. –

+0

Stuck означает, что приложение не идет дальше, и нет никакого кода ошибки или предупреждения. Вот почему я не знаю, как его исправить –

+0

Приложение просто не останавливается. :) Проверьте консоль с помощью удаленной отладки. –

ответ

0

Скорее всего это: LocalFileSystem.PERSISTENT. Я полагаю, вы имеете в виду окно. ПОСТОЯННОЕ или окно. ВРЕМЯ.

+0

Каковы различия между LocalFileSystem и окном? –

+0

Окно - это объект, доступный JavaScript, LocalFileSystem не является (afaik). –

+1

Все еще не работает, хотя все примеры в Интернете windows.requestFileSystem с LocalFileSystem. т.е.: http://docs.phonegap.com/en/edge/cordova_file_file.md.html –

-1

Как вы можете видеть, html 5 file system API docs, для постоянного хранения, второй аргумент window.requestFileSytem() - это квота «Размер (в байтах) приложения потребуется для хранения». Если вы установите его в Zero, файловая система может оказаться бесполезной.

Чтобы увидеть, если вы имеете право запросить определенное количество памяти, вы должны следовать документам советуют:

Чтобы использовать Persistent Storage, вы должны получить разрешение от пользователя для хранения peristent данных. Такое же ограничение не распространяется на хранение ВРЕМЕННОГО хранения, поскольку браузер может выбрать выселение временно сохраненных данных по своему усмотрению.

Чтобы использовать Persistent Storage с FileSystem API, Chrome предоставляет новый API под window.webkitStorageInfo запросить хранение:

window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) { 
    window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler) 
    ; 
}, function(e) { 
    console.log('Error', e); 
}); 

После того как пользователь получил разрешение, нет необходимости вызывать requestQuota() в будущее (если вы не хотите увеличить квоту вашего приложения). Последующие призывы к равной или меньшей квоте являются noop.