diff options
| author | Wang Haijun <wang.haijun@zte.com.cn> | 2019-09-18 15:45:39 +0800 |
|---|---|---|
| committer | mosimchah <mosimchah@gmail.com> | 2021-03-18 14:25:22 -0400 |
| commit | 69c126e756857af29e8cd9a3f57c2255bb438e6b (patch) | |
| tree | 391c7deb6067ea756120cc455cc66e0d44cb62cf /src/com | |
| parent | 812423083f9c6cb8ab3f6da0803e54ef2dadf613 (diff) | |
While uri inserted with volumeName(external) and file saved
in sdcard, only resolving volumeName from uri could get wrong
volumeName, and insert failed meanwhile.
Test: Create file in sdcard and insert it to MediaProvider.
Change-Id: Ie70240c02916107dd71e53c05b9e11e837561bfd
Diffstat (limited to 'src/com')
| -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. |
