diff --git a/res/values/strings.xml b/res/values/strings.xml index 9ab8c61f631..0151746f0e3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3434,6 +3434,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),