summaryrefslogtreecommitdiff
path: root/media/java/android/mtp/MtpStorageManager.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2019-04-17 11:16:12 -0600
committerJeff Sharkey <jsharkey@android.com>2019-04-17 11:16:15 -0600
commit42bf6d8a421c98a171d3e8fc80a4bcd3bbaabddc (patch)
tree3ba3d8d14099cc9b0a7f075f582c66479a12d77c /media/java/android/mtp/MtpStorageManager.java
parent469f1c90ed7a414144c3752ff493722cc1af2904 (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.java16
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;