OSDN Git Service

Handle missing migration source volume.
authorJeff Sharkey <jsharkey@android.com>
Sun, 5 Jul 2015 21:17:40 +0000 (14:17 -0700)
committerJeff Sharkey <jsharkey@android.com>
Sun, 5 Jul 2015 21:25:44 +0000 (14:25 -0700)
Users can try migrating primary storage while the current location
is missing/unmounted.  Fail gracefully instead of runtime restarting.

Bug: 21927076
Change-Id: I54b92487faf9e62d5d309734bf4c436a9259d156

src/com/android/settings/deviceinfo/MigrateEstimateTask.java
src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java

index 34a44ac..f959ef3 100644 (file)
@@ -81,6 +81,11 @@ public abstract class MigrateEstimateTask extends AsyncTask<Void, Void, Long> 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);
 
index 607cc6f..9439d94 100644 (file)
 
 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);