gpt4 book ai didi

android - 在 Android 上使用 Cordova 将文件写入外部(虚拟)存储

转载 作者:行者123 更新时间:2023-11-30 00:06:42 25 4
gpt4 key购买 nike

我正在尝试使用 Cordova 写入 Android 平板电脑的外部存储(虚拟 SD)。事实上,我正在尝试访问由“bitwebserver”(适用于 android 的 LAMP)创建的“www”目录。

我有如下一段代码

但我无法创建文件,我得到了 5 或 9 错误代码。

我在这里错过了什么?

谢谢!

<script>
// Wait for Cordova to load
document.addEventListener("deviceready", onDeviceReady, false);

// We're ready
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFileSystem, fail);
}

function gotFileSystem(fileSystem) {
fileSystem.root.getFile(cordova.file.externalRootDirectory + "/www/test.txt", {
create: true,
exclusive: false
}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
writer.onwriteend = function (evt) {
console.log("contents of file now 'some sample text'");
writer.truncate(11);
writer.onwriteend = function (evt) {
console.log("contents of file now 'some sample'");
writer.seek(4);
writer.write(" different text");
writer.onwriteend = function (evt) {
console.log("contents of file now 'some different text'");
}
};
};
writer.write("some sample text");
}

function fail(error) {
console.log(error.code);
console.log(error);
}
</script>

最佳答案

在我看来,您的问题是您正试图在应用程序沙箱之外的位置写入模拟 SD 卡。

从Android 4.4开始,SD卡根目录(/sdcard//storage/emulated/0等)是只读的,不能写入.这同样适用于应用程序沙盒区域之外的任何其他文件夹。尝试写入未经授权的区域将导致 writer.onerror() 函数被调用,错误代码为 9:NO_MODIFICATION_ALLOWED_ERR。因此,尝试写入 cordova.file.externalRootDirectory + "/www/test.txt" 将解析为 /sdcard/www/test.txt 并导致上述错误.

您必须写入 SD 卡上的应用程序存储目录(例如 /sdcard/Android/data/your.app.package.id/)。您可以使用 cordova-plugin-file 作为 cordova.file.externalApplicationStorageDirectory 引用此位置。

参见 this answer了解不同版本的 Android 中 SD 卡访问的详细信息。

关于android - 在 Android 上使用 Cordova 将文件写入外部(虚拟)存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48841318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com