困在window.requestFileSystem上

时间:2015-02-05 11:46:17

标签: javascript android cordova phonegap-plugins wikitude

我正在使用基于phonegap 4.0&amp ;;的Android应用程序。 wikitude。我想在root上创建一个文件夹(/ storage / emulated / 0 /或/ storage / sdcard0,如果有SD)。这样做的代码是:

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和三星galaxy tab 2)应用程序停留在&#34; window.requestFileSystem(LocalFileSystem.PERSISTENT,0,gotFS,fail); &#34;

文件传输和文件的插件已经在我的插件文件夹中,android manifest.xml拥有WRITE_EXTERNAL_STORAGE的权限,我已经尝试了几乎所有的东西......我只是想知道为什么程序没有& #39; t走得更远window.requestFileSystem。

谢谢,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:0)

最有可能的是:LocalFileSystem.PERSISTENT。我相信你的意思是window.PERSISTENT或window.TEMPORARY。

答案 1 :(得分:-1)

正如您所见,html 5 file system API docs,  对于持久存储,window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) { window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler) ; }, function(e) { console.log('Error', e); }); 的第二个参数是配额,&#34;应用程序存储所需的大小(以字节为单位)。&#34; 如果将其设置为Zero,则文件系统可能无用。

要查看您是否被允许请求一定数量的内存,您应该按照文档建议:

要使用PERSISTENT存储,您必须获得用户的许可才能存储持久数据。同样的限制并不适用于TEMPORARY存储,因为浏览器可以自行选择驱逐临时存储的数据。

要在文件系统API中使用PERSISTENT存储,Chrome会在window.webkitStorageInfo下公开一个新的API以请求存储:

let rec sort = function
  | []         -> []
  | [x]        -> [x]
  | x1::x2::xs -> if x1 <= x2 then x1 :: sort (x2::xs)
                              else x2 :: sort (x1::xs)

用户授予权限后,将来无需再调用requestQuota()(除非您希望增加应用的配额)。随后调用相等或较小的配额是noop。