diff options
| author | Hung-ying Tyan <tyanh@google.com> | 2020-02-05 16:55:01 +0800 |
|---|---|---|
| committer | Hung-ying Tyan <tyanh@google.com> | 2020-02-05 17:07:31 +0800 |
| commit | 774d89ef641fcaa612ee83e49655ef2ea9e0bbc6 (patch) | |
| tree | 1e42e71086d52e885fcf9f81182cb500828ef7c1 /core/java/android | |
| parent | a7050d47bd2e3198184f2af4568677707c39d4d1 (diff) | |
Resolve media directories to the real paths
as /product may be a symlink to /system/product.
Bug: 147688127
Bug: 147701212
Test: pass android.telecom.cts.BackgroundCallAudioTest on GSI
Change-Id: Ie3588edece1e19ad12bdbf5825b9ff7dfc31cecd
Diffstat (limited to 'core/java/android')
| -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 |
