summaryrefslogtreecommitdiffstats
path: root/core/java/android/os/storage/StorageManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/os/storage/StorageManager.java')
-rw-r--r--core/java/android/os/storage/StorageManager.java81
1 files changed, 57 insertions, 24 deletions
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index bd42f6a..0e977ff 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -35,7 +35,6 @@ import android.util.Log;
import android.util.SparseArray;
import com.android.internal.os.SomeArgs;
-import com.android.internal.util.ArrayUtils;
import com.android.internal.util.Preconditions;
import java.io.File;
@@ -71,6 +70,9 @@ public class StorageManager {
/** {@hide} */
public static final String PROP_PRIMARY_PHYSICAL = "ro.vold.primary_physical";
+ /** {@hide} */
+ public static final int FLAG_ALL_METADATA = 1 << 0;
+
private final Context mContext;
private final ContentResolver mResolver;
@@ -84,6 +86,7 @@ public class StorageManager {
Handler.Callback {
private static final int MSG_STORAGE_STATE_CHANGED = 1;
private static final int MSG_VOLUME_STATE_CHANGED = 2;
+ private static final int MSG_VOLUME_METADATA_CHANGED = 3;
final StorageEventListener mCallback;
final Handler mHandler;
@@ -106,6 +109,10 @@ public class StorageManager {
mCallback.onVolumeStateChanged((VolumeInfo) args.arg1, args.argi2, args.argi3);
args.recycle();
return true;
+ case MSG_VOLUME_METADATA_CHANGED:
+ mCallback.onVolumeMetadataChanged((VolumeInfo) args.arg1);
+ args.recycle();
+ return true;
}
args.recycle();
return false;
@@ -133,6 +140,13 @@ public class StorageManager {
args.argi3 = newState;
mHandler.obtainMessage(MSG_VOLUME_STATE_CHANGED, args).sendToTarget();
}
+
+ @Override
+ public void onVolumeMetadataChanged(VolumeInfo vol) {
+ final SomeArgs args = SomeArgs.obtain();
+ args.arg1 = vol;
+ mHandler.obtainMessage(MSG_VOLUME_METADATA_CHANGED, args).sendToTarget();
+ }
}
/**
@@ -456,18 +470,6 @@ public class StorageManager {
}
/** {@hide} */
- public @Nullable DiskInfo findDiskByVolumeId(String volId) {
- Preconditions.checkNotNull(volId);
- // TODO; go directly to service to make this faster
- for (DiskInfo disk : getDisks()) {
- if (ArrayUtils.contains(disk.volumes, volId)) {
- return disk;
- }
- }
- return null;
- }
-
- /** {@hide} */
public @Nullable VolumeInfo findVolumeById(String id) {
Preconditions.checkNotNull(id);
// TODO; go directly to service to make this faster
@@ -493,25 +495,27 @@ public class StorageManager {
/** {@hide} */
public @NonNull List<VolumeInfo> getVolumes() {
+ return getVolumes(0);
+ }
+
+ /** {@hide} */
+ public @NonNull List<VolumeInfo> getVolumes(int flags) {
try {
- return Arrays.asList(mMountService.getVolumes());
+ return Arrays.asList(mMountService.getVolumes(flags));
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
}
}
/** {@hide} */
- public @Nullable String getBestVolumeDescription(String volId) {
- String descrip = null;
-
- final VolumeInfo vol = findVolumeById(volId);
- if (vol != null) {
- descrip = vol.getDescription();
- }
+ public @Nullable String getBestVolumeDescription(VolumeInfo vol) {
+ String descrip = vol.getDescription();
- final DiskInfo disk = findDiskByVolumeId(volId);
- if (disk != null && TextUtils.isEmpty(descrip)) {
- descrip = disk.getDescription();
+ if (vol.diskId != null) {
+ final DiskInfo disk = findDiskById(vol.diskId);
+ if (disk != null && TextUtils.isEmpty(descrip)) {
+ descrip = disk.getDescription();
+ }
}
return descrip;
@@ -572,6 +576,35 @@ public class StorageManager {
}
/** {@hide} */
+ public void setVolumeNickname(String volId, String nickname) {
+ try {
+ mMountService.setVolumeNickname(volId, nickname);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+
+ /** {@hide} */
+ public void setVolumeInited(String volId, boolean inited) {
+ try {
+ mMountService.setVolumeUserFlags(volId, inited ? VolumeInfo.USER_FLAG_INITED : 0,
+ VolumeInfo.USER_FLAG_INITED);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+
+ /** {@hide} */
+ public void setVolumeSnoozed(String volId, boolean snoozed) {
+ try {
+ mMountService.setVolumeUserFlags(volId, snoozed ? VolumeInfo.USER_FLAG_SNOOZED : 0,
+ VolumeInfo.USER_FLAG_SNOOZED);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+
+ /** {@hide} */
public @Nullable StorageVolume getStorageVolume(File file) {
return getStorageVolume(getVolumeList(), file);
}