From 1ec941db0ce37a864b5aa1a92111e5c52953c33e Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 21 Apr 2016 10:45:39 -0700 Subject: [PATCH] Handling of issues while migrating primary storage Bug: 28177789 Change-Id: Icfbd048ddf0a1d55df1e7273d49727357b98a452 --- res/values/strings.xml | 4 +++ .../StorageWizardMigrateConfirm.java | 31 ++++++++++++++++++- .../StorageWizardMigrateProgress.java | 8 +++-- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4f5c7b34667..eaa6dc0b346 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3432,6 +3432,10 @@ Moving + + Another migration is already in progress. + Not enough storage space. App doesn\u2019t exist. diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java index 3eae0817f14..7b98dc252ad 100644 --- a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java +++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java @@ -19,11 +19,16 @@ package com.android.settings.deviceinfo; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; +import android.os.storage.DiskInfo; +import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; import android.util.Log; +import android.widget.Toast; import com.android.settings.R; +import java.util.Objects; + import static com.android.settings.deviceinfo.StorageSettings.TAG; public class StorageWizardMigrateConfirm extends StorageWizardBase { @@ -70,7 +75,31 @@ public class StorageWizardMigrateConfirm extends StorageWizardBase { @Override public void onNavigateNext() { - final int moveId = getPackageManager().movePrimaryStorage(mVolume); + int moveId; + + // We only expect exceptions from MountService#setPrimaryStorageUuid + try { + moveId = getPackageManager().movePrimaryStorage(mVolume); + } catch (IllegalArgumentException e) { + StorageManager sm = (StorageManager) getSystemService(STORAGE_SERVICE); + + if (Objects.equals(mVolume.getFsUuid(), sm.getPrimaryStorageVolume().getUuid())) { + final Intent intent = new Intent(this, StorageWizardReady.class); + intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId()); + startActivity(intent); + finishAffinity(); + + return; + } else { + throw e; + } + } catch (IllegalStateException e) { + Toast.makeText(this, getString(R.string.another_migration_already_in_progress), + Toast.LENGTH_LONG).show(); + finishAffinity(); + + return; + } final Intent intent = new Intent(this, StorageWizardMigrateProgress.class); intent.putExtra(VolumeInfo.EXTRA_VOLUME_ID, mVolume.getId()); diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java index 163ff42b865..ade3bfab6db 100644 --- a/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java +++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java @@ -76,9 +76,11 @@ public class StorageWizardMigrateProgress extends StorageWizardBase { finishIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); sendBroadcast(finishIntent); - final Intent intent = new Intent(context, StorageWizardReady.class); - intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId()); - startActivity(intent); + if (!StorageWizardMigrateProgress.this.isFinishing()) { + final Intent intent = new Intent(context, StorageWizardReady.class); + intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId()); + startActivity(intent); + } } } else { Toast.makeText(context, getString(R.string.insufficient_storage),