summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/providers/media/MediaProvider.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 626bbb8e..f3d34bea 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -2748,8 +2748,7 @@ public class MediaProvider extends ContentProvider {
private void assertFileColumnsSane(int match, Uri uri, ContentValues values)
throws VolumeArgumentException, VolumeNotFoundException {
if (!values.containsKey(MediaColumns.DATA)) return;
-
- final String volumeName = resolveVolumeName(uri);
+ final String volumeName = resolveVolumeName(uri, values.getAsString(MediaColumns.DATA));
try {
// Sanity check that the requested path actually lives on volume
final Collection<File> allowed = getVolumeScanPaths(volumeName);
@@ -3218,6 +3217,19 @@ public class MediaProvider extends ContentProvider {
}
}
+ private static @NonNull String resolveVolumeName(@NonNull Uri uri, @NonNull String path) {
+ final String volumeName = getVolumeName(uri);
+ if (MediaStore.VOLUME_EXTERNAL.equals(volumeName)) {
+ if (path != null) {
+ return getVolumeName(new File(path));
+ } else {
+ return MediaStore.VOLUME_EXTERNAL_PRIMARY;
+ }
+ } else {
+ return volumeName;
+ }
+ }
+
/**
* @deprecated all operations should be routed through the overload that
* accepts a {@link Bundle} of extras.