diff --git a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java index aebe9e40..c9372ea5 100644 --- a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java +++ b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaLibrary.java @@ -164,8 +164,13 @@ public class MediaLibrary { private static ArrayList discoverDefaultMediaPaths(Context context) { ArrayList defaultPaths = new ArrayList<>(); - // Try to discover media paths using getExternalMediaDirs() on 5.x and newer - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // Running on a platform which enforces scoped access, so we blindly accept all dirs. + for (File file : context.getExternalMediaDirs()) { + defaultPaths.add(file.getAbsolutePath()); + } + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + // Try to discover media paths using getExternalMediaDirs() on 5.x and newer for (File file : context.getExternalMediaDirs()) { // Seems to happen on some Samsung 5.x devices. :-( if (file == null) diff --git a/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java b/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java index 4c942b60..a6812bb5 100644 --- a/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java +++ b/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2016 Adrian Ulrich + * Copyright (C) 2015-2020 Adrian Ulrich * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,6 +29,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; +import android.os.Build; import android.os.Environment; import android.util.Log; @@ -212,7 +213,20 @@ public class FileUtils { public static File getFilesystemBrowseStart(Context context) { SharedPreferences prefs = SharedPrefHelper.getSettings(context); String folder = prefs.getString(PrefKeys.FILESYSTEM_BROWSE_START, PrefDefaults.FILESYSTEM_BROWSE_START); - return new File( folder.equals("") ? Environment.getExternalStorageDirectory().getAbsolutePath() : folder ); + + if (folder.equals("")) { + folder = Environment.getExternalStorageDirectory().getAbsolutePath(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // If we are running on a platform which enforces scoped access, try to find + // the suggested media dir instead. + for (File p : context.getExternalMediaDirs()) { + folder = p.getAbsolutePath(); + break; + } + } + } + return new File(folder); } /**