diff options
| -rw-r--r-- | src/com/android/providers/media/MediaProvider.java | 16 |
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. |
