Handle missing migration source volume.
Users can try migrating primary storage while the current location
is missing/unmounted. Fail gracefully instead of runtime restarting.
Bug: 21927076
Change-Id: I54b92487faf9e62d5d309734bf4c436a9259d156
diff --git a/src/com/android/settings/deviceinfo/MigrateEstimateTask.java b/src/com/android/settings/deviceinfo/MigrateEstimateTask.java
index 34a44ac..f959ef3 100644
--- a/src/com/android/settings/deviceinfo/MigrateEstimateTask.java
+++ b/src/com/android/settings/deviceinfo/MigrateEstimateTask.java
@@ -81,6 +81,11 @@
final VolumeInfo privateVol = mContext.getPackageManager().getPrimaryStorageCurrentVolume();
final VolumeInfo emulatedVol = mStorage.findEmulatedForPrivate(privateVol);
+ if (emulatedVol == null) {
+ Log.w(TAG, "Failed to find current primary storage");
+ return -1L;
+ }
+
final String path = emulatedVol.getPath().getAbsolutePath();
Log.d(TAG, "Estimating for current path " + path);
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
index 607cc6f..9439d94 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
@@ -16,10 +16,13 @@
package com.android.settings.deviceinfo;
+import static com.android.settings.deviceinfo.StorageSettings.TAG;
+
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.storage.VolumeInfo;
+import android.util.Log;
import com.android.settings.R;
@@ -36,12 +39,13 @@
mVolume = findFirstVolume(VolumeInfo.TYPE_PRIVATE);
}
- if (mVolume == null) {
+ final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
+ if (sourceVol == null || mVolume == null) {
+ Log.d(TAG, "Missing either source or target volume");
finish();
return;
}
- final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol);
final String targetDescrip = mStorage.getBestVolumeDescription(mVolume);