diff --git a/src/com/android/providers/media/util/FileUtils.java b/src/com/android/providers/media/util/FileUtils.java
index 8e7e75f..835efbc 100644
--- a/src/com/android/providers/media/util/FileUtils.java
+++ b/src/com/android/providers/media/util/FileUtils.java
@@ -1182,11 +1182,17 @@
     @VisibleForTesting
     static boolean isExternalMediaDirectory(@NonNull String path, String crossUserRoot) {
         final String relativePath = extractRelativePath(path);
-        if (relativePath != null) {
-            final String externalMediaDir = (crossUserRoot == null || crossUserRoot.isEmpty())
-                    ? "Android/media" : crossUserRoot + "/Android/media";
-            return StringUtils.startsWithIgnoreCase(relativePath, externalMediaDir);
+        if (relativePath == null) {
+            return false;
         }
+
+        if (StringUtils.startsWithIgnoreCase(relativePath, "Android/media")) {
+            return true;
+        }
+        if (!TextUtils.isEmpty(crossUserRoot)) {
+            return StringUtils.startsWithIgnoreCase(relativePath, crossUserRoot + "/Android/media");
+        }
+
         return false;
     }
 
diff --git a/tests/src/com/android/providers/media/util/FileUtilsTest.java b/tests/src/com/android/providers/media/util/FileUtilsTest.java
index f241be3..96a9d1b 100644
--- a/tests/src/com/android/providers/media/util/FileUtilsTest.java
+++ b/tests/src/com/android/providers/media/util/FileUtilsTest.java
@@ -1034,12 +1034,22 @@
     @Test
     public void testIsExternalMediaDirectory() throws Exception {
         for (String prefix : new String[] {
-                "/storage/emulated/0/AppClone/",
-                "/storage/0000-0000/AppClone/"
+                "/storage/emulated/0/",
+                "/storage/0000-0000/",
         }) {
+            assertTrue(isExternalMediaDirectory(prefix + "Android/media/foo.jpg", null));
+            assertTrue(isExternalMediaDirectory(prefix + "Android/media/foo.jpg", ""));
+            assertTrue(isExternalMediaDirectory(prefix + "Android/mEdia/foo.jpg", ""));
+            assertFalse(isExternalMediaDirectory(prefix + "Android/data/foo.jpg", ""));
             assertTrue(isExternalMediaDirectory(prefix + "Android/media/foo.jpg", "AppClone"));
             assertTrue(isExternalMediaDirectory(prefix + "android/mEdia/foo.jpg", "AppClone"));
-            assertFalse(isExternalMediaDirectory(prefix + "Android/media/foo.jpg", "NotAppClone"));
+            assertTrue(isExternalMediaDirectory(prefix + "AppClone/Android/media/foo.jpg", "AppClone"));
+            assertTrue(isExternalMediaDirectory(prefix + "AppClone/Android/mEdia/foo.jpg", "AppClone"));
+            assertTrue(isExternalMediaDirectory(prefix + "Appclone/Android/mEdia/foo.jpg", "AppClone"));
+            assertFalse(isExternalMediaDirectory(prefix + "AppClone/Android/media/foo.jpg", null));
+            assertFalse(isExternalMediaDirectory(prefix + "AppClone/Android/mEdia/foo.jpg", null));
+            assertFalse(isExternalMediaDirectory(prefix + "AppClone/Android/media/foo.jpg", ""));
+            assertFalse(isExternalMediaDirectory(prefix + "AppClone/Android/media/foo.jpg", "NotAppClone"));
         }
     }
 
