[英]How to manage files and folder in Android 11 maintaining backwards-compatibility
我需要使我的應用程序與大於 29(Android 11+)的 android 版本兼容。 目前我使用以下代碼創建一個文件夾樹:
public void createFolder() {
try {
ArrayList<File> listDir = new ArrayList<>();
listDir.add(new File(MAIN_FOLDER));
listDir.add(new File(CONFIG_FOLDER_ROOT));
listDir.add(new File(PDF_FOLDER));
listDir.add(new File(THUMB_FOLDER));
listDir.add(new File(LOGS_FOLDER));
listDir.add(new File(ARCHIVE_FOLDER));
listDir.add(new File(ZOMBIE_FOLDER));
listDir.add(new File(DATASHEET_FOLDER));
for (int i = 0; i < listDir.size(); i++) {
if (!listDir.get(i).exists()) {
if (listDir.get(i).mkdirs()) {
//Creo il file .incarichi
if (listDir.get(i).getName().compareToIgnoreCase(".Data") == 0) {
File fileIncarichi = new File(listDir.get(i).getAbsolutePath(), ASSIGNMENT_FILE);
if (!fileIncarichi.exists()) {
fileIncarichi.createNewFile();
}
}
//Creo il file .warning
if (listDir.get(i).getName().compareToIgnoreCase(".Logs") == 0) {
File fileIncarichi = new File(listDir.get(i).getAbsolutePath(), WARNING_FILE);
if (!fileIncarichi.exists()) {
fileIncarichi.createNewFile();
}
File fileConfig = new File(listDir.get(i).getAbsolutePath(), CONFIG_FILE);
if (!fileConfig.exists()) {
fileConfig.createNewFile();
}
}
//Creo i file .nomedia
File fileMedia = new File(listDir.get(i).getAbsolutePath(), ".nomedia");
if (!fileMedia.exists()) {
fileMedia.createNewFile();
}
}
}
}
} catch (Exception e) {
wil.WriteFile("1)FilesUtilities - Exception: " + e.getMessage());
}
}
這些是我傳遞給“newFile()”函數的變量示例:
public final static String MAIN_FOLDER = Environment.getExternalStorageDirectory() + "/.MYAPP";
public final static String THUMB_FOLDER = Environment.getExternalStorageDirectory() + "/.MYAPP/.Thumbs";
為了保持與新的 android 版本的兼容性,我已在清單中插入,現在一切正常:
android:requestLegacyExternalStorage="true"
我通過 Play 商店收到通知,到 5 月 5 日我必須調整我的應用程序以使其符合新政策,所以我開始閱讀如何使應用程序與 android 的所有版本兼容,但我有關於如何進行的一些疑問。
請記住,我無法創建“自定義”文件夾,是否可以直接在公共文件夾(例如“下載,文檔”)中創建我的目錄,或者是否有必要完全更改使用“媒體存儲”創建和訪問文件的程序”或“商店訪問框架”?
以經典方式將文件寫入公共 Documents 文件夾的子目錄。
他們會活下來。
但無法通過經典文件方式訪問(除非您的應用程序具有“所有文件訪問權限”)但使用 SAF。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.