我的目标是我的 Android 应用程序适用于 Android 13 (API 33)。我在仅在运行 android 13 的手机上下载文件时遇到问题;我收到一个错误代码 2,通常是 SECURITY_ERR:fileSystem.getDirectory('Download', {create: true,exclusive:false}
我的代码如下:
.getByUrlCode(CONST.URL_LINK_URL_CODE_WEB_MOBILE).then(function (mobileSettingsLink) {
$http({
method: "GET",
url: mobileSettingsLink.mobileSettingsLink + data.urlpdf,
responseType: "blob"
}).then(function (response) {
var mimetype = response.headers("Content-Type");
console.log("response.data==="+response.data);
var file = new Blob([response.data], {type: mimetype});
var fileURL = URL.createObjectURL(file);
var fileName = response.headers("Content-Disposition").split(';')[1].split('=')[1];if(mimetype.includes("text/comma-separated-values")){
mimetype = "text/csv";
}else if(mimetype.includes("text/semicolon-separated-values")){
mimetype = "text/csv";
}else if(mimetype.includes("ascii")){
mimetype = "text/plain";
}else if(mimetype.includes("text/qif")){
mimetype = "application/qif";
}else if(mimetype.includes("text/ofx")){
mimetype = "application/x-ofx";
}
var storageLocation = "";
if (ionic.Platform.isAndroid()) {
storageLocation = "file:///storage/emulated/0/";
console.log("storageLocation=="+storageLocation);
}
else {
storageLocation = cordova.file.documentsDirectory;
}
window.resolveLocalFileSystemURL(storageLocation,
function (fileSystem) {
fileSystem.getDirectory('Download', {
create: true,
exclusive: false
},
function (directory) {
directory.getFile(fileName, {
create: true,
exclusive: false
},
function (fileEntry) {
fileEntry.createWriter(function (writer) {
writer.onwriteend = function () {
console.log("File written to downloads");
};
writer.seek(0);
writer.write(file);
var url = fileEntry.toURL();
cordova.plugins.fileOpener2.open(url, mimetype, {
error: function error(err) {
console.error(err);
alert("Impossible d'ouvrir le fichier, assurez-vous d\'avoir une application qui peut ouvrir ce type de fichier.");
},
success: function success() {
console.log("success with opening the file");
}
});
}, function(e) {
console.log("Error: " + e);
console.error("Error1: ", e);
});
}, function(e) {console.log("Error: " + e);
console.error("Error2: ", e);
});
}, function(e) {console.log("Error: " + e);
console.error("Error3: ", e);
});
}, function(e) {console.log("Error: " + e);
console.error("Error4: ", e);
});
});
});
});
}
};
})
}());
在这个 android 行为变化的链接中,他们谈论的是媒体文件,而不是 pdf、txt、csv 文件……:
https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions
有人知道如何使用 Android 13 处理创建和读取目录和文件吗?