summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2020-02-05 16:55:01 +0800
committerHung-ying Tyan <tyanh@google.com>2020-02-05 17:07:31 +0800
commit774d89ef641fcaa612ee83e49655ef2ea9e0bbc6 (patch)
tree1e42e71086d52e885fcf9f81182cb500828ef7c1 /core/java/android
parenta7050d47bd2e3198184f2af4568677707c39d4d1 (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.java17
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