Android 将目标 api 设置为 29 时未创建设备目录
Android device directory not creating when i set target api as 29
我在 cordova 中有一个移动应用程序,因为我创建了目录,如果我使用 Target Api 28,它将同时创建文件夹,如果将 Target Api 设置为 29,目录从不创建,我正在使用以下代码在内部存储中创建目录。
if (device.platform.toLowerCase() == "android") {
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemSuccess, onError);
} else {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError);
}
function onFileSystemSuccess(fileSystem) {
var entry = "";
if (device.platform.toLowerCase() == "android") {
entry = fileSystem;
} else {
entry = fileSystem.root;
}
entry.getDirectory("smfolder", {
create: true,
exclusive: false
}, onGetDirectorySuccess, onGetDirectoryFail);
};
function onError(e) {
alert("Fail to get folder");
};
这是 config.xml 屏幕截图:http://prntscr.com/w53qgh
当我在Play Store上传时,它会要求将Target Api级别设置为29,然后只能上传,所以我需要将API设置为29,是否需要在配置中添加或android 清单文件?或者需要添加权限才能使用 API 29.
感谢您的帮助,因为我已经被困在这几天了。
此致,
亚拉文
虽然我不是 Cordova 专家,但问题似乎是因为 Scoped Storage 作为 API 29 (Android 10)
的一部分引入
它对您的应用程序如何 read/write 添加了一些限制到文件系统。但是,作为一种变通方法,您可以选择退出分区存储,就像 API 28.
一样工作
只需在清单文件的应用程序标记中添加 android:requestLegacyExternalStorage="true"
即可选择退出分区存储。它应该可以解决您的问题。
确保您的 compileSdkVersion 设置为 29 以使用此属性。
请注意,如果您的目标是 API 30 (Android 11),系统将忽略此标志,您必须让您的应用与分区存储兼容。
更多信息:https://developer.android.com/about/versions/11/privacy/storage
我在 cordova 中有一个移动应用程序,因为我创建了目录,如果我使用 Target Api 28,它将同时创建文件夹,如果将 Target Api 设置为 29,目录从不创建,我正在使用以下代码在内部存储中创建目录。
if (device.platform.toLowerCase() == "android") {
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemSuccess, onError);
} else {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError);
}
function onFileSystemSuccess(fileSystem) {
var entry = "";
if (device.platform.toLowerCase() == "android") {
entry = fileSystem;
} else {
entry = fileSystem.root;
}
entry.getDirectory("smfolder", {
create: true,
exclusive: false
}, onGetDirectorySuccess, onGetDirectoryFail);
};
function onError(e) {
alert("Fail to get folder");
};
这是 config.xml 屏幕截图:http://prntscr.com/w53qgh 当我在Play Store上传时,它会要求将Target Api级别设置为29,然后只能上传,所以我需要将API设置为29,是否需要在配置中添加或android 清单文件?或者需要添加权限才能使用 API 29.
感谢您的帮助,因为我已经被困在这几天了。
此致,
亚拉文
虽然我不是 Cordova 专家,但问题似乎是因为 Scoped Storage 作为 API 29 (Android 10)
的一部分引入它对您的应用程序如何 read/write 添加了一些限制到文件系统。但是,作为一种变通方法,您可以选择退出分区存储,就像 API 28.
一样工作只需在清单文件的应用程序标记中添加 android:requestLegacyExternalStorage="true"
即可选择退出分区存储。它应该可以解决您的问题。
确保您的 compileSdkVersion 设置为 29 以使用此属性。
请注意,如果您的目标是 API 30 (Android 11),系统将忽略此标志,您必须让您的应用与分区存储兼容。
更多信息:https://developer.android.com/about/versions/11/privacy/storage