diff options
author | Jeff Sharkey <jsharkey@android.com> | 2019-04-17 11:16:12 -0600 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2019-04-17 11:16:15 -0600 |
commit | 42bf6d8a421c98a171d3e8fc80a4bcd3bbaabddc (patch) | |
tree | 3ba3d8d14099cc9b0a7f075f582c66479a12d77c /media/java/android/mtp/MtpStorageManager.java | |
parent | 469f1c90ed7a414144c3752ff493722cc1af2904 (diff) |
Adjust MTP to reference by specific volume name.
The MediaStore.VOLUME_EXTERNAL volume is a merged view of all storage
devices, and clients working on a specific volume need to focus on
the volume they're interested in.
Bug: 129840030
Test: atest --test-mapping packages/providers/MediaProvider
Change-Id: I91cee6a96d7f9360e6a93a9a3c389b097b6b9967
Diffstat (limited to 'media/java/android/mtp/MtpStorageManager.java')
-rw-r--r-- | media/java/android/mtp/MtpStorageManager.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/media/java/android/mtp/MtpStorageManager.java b/media/java/android/mtp/MtpStorageManager.java index f14e7d704ea1..e783788d0158 100644 --- a/media/java/android/mtp/MtpStorageManager.java +++ b/media/java/android/mtp/MtpStorageManager.java @@ -21,6 +21,8 @@ import android.os.FileObserver; import android.os.storage.StorageVolume; import android.util.Log; +import com.android.internal.util.Preconditions; + import java.io.IOException; import java.nio.file.DirectoryIteratorException; import java.nio.file.DirectoryStream; @@ -131,6 +133,7 @@ public class MtpStorageManager { /** MtpObject represents either a file or directory in an associated storage. **/ public static class MtpObject { + private MtpStorage mStorage; // null for root objects private MtpObject mParent; @@ -147,9 +150,10 @@ public class MtpStorageManager { // null if not both a directory and visited private FileObserver mObserver; - MtpObject(String name, int id, MtpObject parent, boolean isDir) { + MtpObject(String name, int id, MtpStorage storage, MtpObject parent, boolean isDir) { mId = id; mName = name; + mStorage = Preconditions.checkNotNull(storage); mParent = parent; mObserver = null; mVisited = false; @@ -206,6 +210,10 @@ public class MtpStorageManager { return mParent == null; } + public String getVolumeName() { + return mStorage.getVolumeName(); + } + /** For MtpStorageManager only **/ private void setName(String name) { @@ -278,7 +286,7 @@ public class MtpStorageManager { } private MtpObject copy(boolean recursive) { - MtpObject copy = new MtpObject(mName, mId, mParent, mIsDir); + MtpObject copy = new MtpObject(mName, mId, mStorage, mParent, mIsDir); copy.mIsDir = mIsDir; copy.mVisited = mVisited; copy.mState = mState; @@ -408,7 +416,7 @@ public class MtpStorageManager { public synchronized MtpStorage addMtpStorage(StorageVolume volume) { int storageId = ((getNextStorageId() & 0x0000FFFF) << 16) + 1; MtpStorage storage = new MtpStorage(volume, storageId); - MtpObject root = new MtpObject(storage.getPath(), storageId, null, true); + MtpObject root = new MtpObject(storage.getPath(), storageId, storage, null, true); mRoots.put(storageId, root); return storage; } @@ -608,7 +616,7 @@ public class MtpStorageManager { return null; } - MtpObject obj = new MtpObject(newName, getNextObjectId(), parent, isDir); + MtpObject obj = new MtpObject(newName, getNextObjectId(), parent.mStorage, parent, isDir); mObjects.put(obj.getId(), obj); parent.addChild(obj); return obj; |