From 6a0082b483eb487c44dec5e8855cf0e1ab92020b Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sun, 5 Jul 2015 14:17:40 -0700 Subject: [PATCH] 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 --- .../android/settings/deviceinfo/MigrateEstimateTask.java | 5 +++++ .../settings/deviceinfo/StorageWizardMigrateConfirm.java | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/deviceinfo/MigrateEstimateTask.java b/src/com/android/settings/deviceinfo/MigrateEstimateTask.java index 34a44ac8fb9..f959ef3dda4 100644 --- a/src/com/android/settings/deviceinfo/MigrateEstimateTask.java +++ b/src/com/android/settings/deviceinfo/MigrateEstimateTask.java @@ -81,6 +81,11 @@ public abstract class MigrateEstimateTask extends AsyncTask im 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 607cc6f5c1c..9439d941ec1 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 @@ public class StorageWizardMigrateConfirm extends StorageWizardBase { 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);