BackupManager: improve backup/restore zip on api < 30

This commit is contained in:
Yuriy Liskov
2026-03-09 01:56:45 +02:00
parent 173d1c2870
commit 83051e36b8

View File

@@ -41,7 +41,7 @@ public class BackupAndRestoreHelper implements OnResult {
return;
}
File mediaDir = getExternalStorageDirectory();
File mediaDir = getExternalMediaDirectory();
File dataDir = new File(mediaDir, "data");
if (!dataDir.exists()) return;
@@ -83,7 +83,7 @@ public class BackupAndRestoreHelper implements OnResult {
if (data == null) return;
File mediaDir = getExternalStorageDirectory();
File mediaDir = getExternalMediaDirectory();
File dataDir = new File(mediaDir, "data");
if (!mediaDir.exists()) mediaDir.mkdirs();
@@ -120,7 +120,7 @@ public class BackupAndRestoreHelper implements OnResult {
try {
// Target folder: /Android/media/<package>/data
File mediaDir = getExternalStorageDirectory();
File mediaDir = getExternalMediaDirectory();
File dataDir = new File(mediaDir, "data");
// Remove old data
@@ -228,6 +228,30 @@ public class BackupAndRestoreHelper implements OnResult {
return result;
}
private File getExternalMediaDirectory() {
File result = null;
if (VERSION.SDK_INT >= 21) {
File[] dirs = mContext.getExternalMediaDirs();
if (dirs != null && dirs.length > 0) {
result = dirs[0];
}
}
if (result == null) {
result = new File(
Environment.getExternalStorageDirectory(),
"Android/media/" + mContext.getPackageName()
);
}
if (!result.exists()) {
result.mkdirs();
}
return result;
}
private void deleteRecursive(File f) {
if (!f.exists()) return;
if (f.isDirectory()) {