我正在使用基于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。
谢谢,抱歉我的英语不好。
答案 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。