diff options
| author | 2019-02-19 20:23:05 +0000 | |
|---|---|---|
| committer | 2019-02-19 20:23:05 +0000 | |
| commit | 924f620c9f725d853f745a5318656e304dd6acbf (patch) | |
| tree | fe8ce9cf730e3d40a787156d50ac60bd83a6dcf0 | |
| parent | 9a8bcf5fe4c4c83cd23d4a9dacb35e2d182c3948 (diff) | |
| parent | f8fa9404054d30091bb0cc6b4a0302416ca11a3c (diff) | |
Merge "Map MediaStore items to StorageVolume."
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/os/storage/StorageManager.java | 24 |
2 files changed, 24 insertions, 1 deletions
diff --git a/api/current.txt b/api/current.txt index 7f1e7f553cef..4ac827afb54b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -35683,6 +35683,7 @@ package android.os.storage { method public String getMountedObbPath(String); method @NonNull public android.os.storage.StorageVolume getPrimaryStorageVolume(); method @Nullable public android.os.storage.StorageVolume getStorageVolume(java.io.File); + method @NonNull public android.os.storage.StorageVolume getStorageVolume(@NonNull android.net.Uri); method @NonNull public java.util.List<android.os.storage.StorageVolume> getStorageVolumes(); method @NonNull public java.util.UUID getUuidForPath(@NonNull java.io.File) throws java.io.IOException; method public boolean isAllocationSupported(@NonNull java.io.FileDescriptor); diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 43c906495cb6..15aaa946e602 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -38,6 +38,7 @@ import android.content.pm.IPackageMoveObserver; import android.content.pm.PackageManager; import android.content.res.ObbInfo; import android.content.res.ObbScanner; +import android.net.Uri; import android.os.Binder; import android.os.Environment; import android.os.FileUtils; @@ -55,6 +56,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import android.os.SystemProperties; +import android.provider.MediaStore; import android.provider.Settings; import android.sysprop.VoldProperties; import android.system.ErrnoException; @@ -1096,12 +1098,32 @@ public class StorageManager { } /** - * Return the {@link StorageVolume} that contains the given file, or {@code null} if none. + * Return the {@link StorageVolume} that contains the given file, or + * {@code null} if none. */ public @Nullable StorageVolume getStorageVolume(File file) { return getStorageVolume(getVolumeList(), file); } + /** + * Return the {@link StorageVolume} that contains the given + * {@link MediaStore} item. + */ + public @NonNull StorageVolume getStorageVolume(@NonNull Uri uri) { + final String volumeName = MediaStore.getVolumeName(uri); + switch (volumeName) { + case MediaStore.VOLUME_EXTERNAL: + return getPrimaryStorageVolume(); + default: + for (StorageVolume vol : getStorageVolumes()) { + if (Objects.equals(vol.getNormalizedUuid(), volumeName)) { + return vol; + } + } + } + throw new IllegalStateException("Unknown volume for " + uri); + } + /** {@hide} */ public static @Nullable StorageVolume getStorageVolume(File file, int userId) { return getStorageVolume(getVolumeList(userId, 0), file); |