Avoid a few crashes around unmounting.
Also refresh UI when metadata changes.
Bug: 19993667
Change-Id: Ib0ea9be68a3db5c71d15fae6809f31df43fd9af0
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index f2d9791..dec259b 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -433,6 +433,14 @@
refresh();
}
}
+
+ @Override
+ public void onVolumeMetadataChanged(VolumeInfo vol) {
+ if (Objects.equals(mVolume.getId(), vol.getId())) {
+ mVolume = vol;
+ refresh();
+ }
+ }
};
/**
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java b/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java
index dd7f91c..614b737 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java
@@ -48,7 +48,7 @@
final StorageManager storage = getActivity().getSystemService(StorageManager.class);
final String volumeId = getArguments().getString(VolumeInfo.EXTRA_VOLUME_ID);
mVolume = storage.findVolumeById(volumeId);
- mDisk = storage.findDiskById(mVolume.getId());
+ mDisk = storage.findDiskById(mVolume.getDiskId());
final View view = inflater.inflate(R.layout.storage_internal_unmount, container, false);
final TextView body = (TextView) view.findViewById(R.id.body);
diff --git a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
index 71fe23d..94a505b 100644
--- a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
@@ -122,6 +122,18 @@
screen.addPreference(mGraph);
screen.addPreference(mTotal);
screen.addPreference(mAvailable);
+
+ final File file = mVolume.getPath();
+ mTotalSize = file.getTotalSpace();
+ mAvailSize = file.getFreeSpace();
+
+ mTotal.setSummary(Formatter.formatFileSize(context, mTotalSize));
+ mAvailable.setSummary(Formatter.formatFileSize(context, mAvailSize));
+
+ mGraph.clear();
+ mGraph.addEntry(0, (mTotalSize - mAvailSize) / (float) mTotalSize,
+ android.graphics.Color.GRAY);
+ mGraph.commit();
}
if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) {
@@ -134,18 +146,6 @@
if (mDisk.isAdoptable()) {
screen.addPreference(mFormatInternal);
}
-
- final File file = mVolume.getPath();
- mTotalSize = file.getTotalSpace();
- mAvailSize = file.getFreeSpace();
-
- mTotal.setSummary(Formatter.formatFileSize(context, mTotalSize));
- mAvailable.setSummary(Formatter.formatFileSize(context, mAvailSize));
-
- mGraph.clear();
- mGraph.addEntry(0, (mTotalSize - mAvailSize) / (float) mTotalSize,
- android.graphics.Color.GRAY);
- mGraph.commit();
}
private UsageBarPreference buildGraph() {
@@ -215,5 +215,13 @@
refresh();
}
}
+
+ @Override
+ public void onVolumeMetadataChanged(VolumeInfo vol) {
+ if (Objects.equals(mVolume.getId(), vol.getId())) {
+ mVolume = vol;
+ refresh();
+ }
+ }
};
}