diff options
| author | 2020-02-06 09:32:21 +0000 | |
|---|---|---|
| committer | 2020-02-06 09:32:21 +0000 | |
| commit | 2f6b69c5e73c108a1abff0d79d6db4f18c675b8c (patch) | |
| tree | 272afaf67521fd1c782232ca9adb79949d937dc3 | |
| parent | 40b1614a8ca79ffcdbc105b3deae7f739114526d (diff) | |
| parent | 774d89ef641fcaa612ee83e49655ef2ea9e0bbc6 (diff) | |
Merge "Resolve media directories to the real paths"
| -rw-r--r-- | core/java/android/os/Environment.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java index 44f12a6adf60..21a1e0f0a108 100644 --- a/core/java/android/os/Environment.java +++ b/core/java/android/os/Environment.java @@ -34,9 +34,11 @@ import android.text.TextUtils; import android.util.Log; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; +import java.util.List; /** * Provides access to environment variables. @@ -539,12 +541,21 @@ public class Environment { @SystemApi public static @NonNull Collection<File> getInternalMediaDirectories() { final ArrayList<File> res = new ArrayList<>(); - res.add(new File(Environment.getRootDirectory(), "media")); - res.add(new File(Environment.getOemDirectory(), "media")); - res.add(new File(Environment.getProductDirectory(), "media")); + addCanonicalFile(res, new File(Environment.getRootDirectory(), "media")); + addCanonicalFile(res, new File(Environment.getOemDirectory(), "media")); + addCanonicalFile(res, new File(Environment.getProductDirectory(), "media")); return res; } + private static void addCanonicalFile(List<File> list, File file) { + try { + list.add(file.getCanonicalFile()); + } catch (IOException e) { + Log.w(TAG, "Failed to resolve " + file + ": " + e); + list.add(file); + } + } + /** * Return the primary shared/external storage directory. This directory may * not currently be accessible if it has been mounted by the user on their |