From 83051e36b8bfea030602748a8f97fb88a98f1181 Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Mon, 9 Mar 2026 01:56:45 +0200 Subject: [PATCH] BackupManager: improve backup/restore zip on api < 30 --- .../common/misc/BackupAndRestoreHelper.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/BackupAndRestoreHelper.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/BackupAndRestoreHelper.java index f81180a01..bef7f9e3a 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/BackupAndRestoreHelper.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/BackupAndRestoreHelper.java @@ -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//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()) {