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()) {