summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Mantler <nicoya@google.com>2016-05-31 21:41:20 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-31 21:41:20 +0000
commit1485479b48d6ecb3166ec0ca72eaa09dd7f9afb5 (patch)
treee00ca8e4156bb0eb4b60fe1e6fef2a1d9194b8ce
parent02e4f676969fd60cf88e61a3fa4fd36d6b7b67b6 (diff)
parentf235e5cb3f3a0b6738907ce31e47b9c382badaa2 (diff)
downloadTvSettings-1485479b48d6ecb3166ec0ca72eaa09dd7f9afb5.tar.gz
Merge "Handle exceptions when migrating storage" into nyc-dev
am: f235e5cb3f * commit 'f235e5cb3f3a0b6738907ce31e47b9c382badaa2': Handle exceptions when migrating storage Change-Id: If8c0e4f318c08b78f7fc1341f3fccfbb0c4f0662
-rw-r--r--Settings/src/com/android/tv/settings/device/storage/BackupAppsStepFragment.java5
-rw-r--r--Settings/src/com/android/tv/settings/device/storage/MigrateStorageActivity.java64
2 files changed, 50 insertions, 19 deletions
diff --git a/Settings/src/com/android/tv/settings/device/storage/BackupAppsStepFragment.java b/Settings/src/com/android/tv/settings/device/storage/BackupAppsStepFragment.java
index 1057da644..4638f3b01 100644
--- a/Settings/src/com/android/tv/settings/device/storage/BackupAppsStepFragment.java
+++ b/Settings/src/com/android/tv/settings/device/storage/BackupAppsStepFragment.java
@@ -290,9 +290,12 @@ public class BackupAppsStepFragment extends GuidedStepFragment implements
@Override
protected void onPostExecute(Map<String, Drawable> stringDrawableMap) {
+ mIconLoaderTask = null;
+ if (!isAdded()) {
+ return;
+ }
mIconMap.putAll(stringDrawableMap);
setActions(getAppActions(false, mEntries));
- mIconLoaderTask = null;
}
}
diff --git a/Settings/src/com/android/tv/settings/device/storage/MigrateStorageActivity.java b/Settings/src/com/android/tv/settings/device/storage/MigrateStorageActivity.java
index 619c0937e..d276f24b2 100644
--- a/Settings/src/com/android/tv/settings/device/storage/MigrateStorageActivity.java
+++ b/Settings/src/com/android/tv/settings/device/storage/MigrateStorageActivity.java
@@ -31,6 +31,7 @@ import android.support.v17.leanback.widget.GuidanceStylist;
import android.support.v17.leanback.widget.GuidedAction;
import android.text.TextUtils;
import android.text.format.Formatter;
+import android.util.Log;
import android.view.View;
import android.widget.Toast;
@@ -39,8 +40,10 @@ import com.android.tv.settings.dialog.ProgressDialogFragment;
import java.io.File;
import java.util.List;
+import java.util.Objects;
public class MigrateStorageActivity extends Activity {
+ private static final String TAG = "MigrateStorageActivity";
private static final String EXTRA_MIGRATE_HERE =
"com.android.tv.settings.device.storage.MigrateStorageActivity.MIGRATE_HERE";
@@ -61,13 +64,9 @@ public class MigrateStorageActivity extends Activity {
return;
}
if (status == PackageManager.MOVE_SUCCEEDED) {
- Toast.makeText(MigrateStorageActivity.this,
- getString(R.string.storage_wizard_migrate_toast_success, mTargetVolumeDesc),
- Toast.LENGTH_SHORT).show();
+ showMigrationSuccessToast();
} else {
- Toast.makeText(MigrateStorageActivity.this,
- getString(R.string.storage_wizard_migrate_toast_failure, mTargetVolumeDesc),
- Toast.LENGTH_SHORT).show();
+ showMigrationFailureToast();
}
finish();
}
@@ -134,24 +133,53 @@ public class MigrateStorageActivity extends Activity {
}
private void onConfirmProceed() {
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content,
- MigrateProgressFragment.newInstance(mTargetVolumeDesc))
- .commit();
- getFragmentManager().executePendingTransactions();
- mMoveId = mPackageManager.movePrimaryStorage(mTargetVolumeInfo);
+ startMigrationInternal();
}
private void onChoose(VolumeInfo volumeInfo) {
mTargetVolumeInfo = volumeInfo;
final StorageManager storageManager = getSystemService(StorageManager.class);
mTargetVolumeDesc = storageManager.getBestVolumeDescription(mTargetVolumeInfo);
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content,
- MigrateProgressFragment.newInstance(mTargetVolumeDesc))
- .commit();
- getFragmentManager().executePendingTransactions();
- mMoveId = mPackageManager.movePrimaryStorage(mTargetVolumeInfo);
+ startMigrationInternal();
+ }
+
+ private void startMigrationInternal() {
+ try {
+ mMoveId = mPackageManager.movePrimaryStorage(mTargetVolumeInfo);
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content,
+ MigrateProgressFragment.newInstance(mTargetVolumeDesc))
+ .commitNow();
+ } catch (IllegalArgumentException e) {
+ // This will generally happen if there's a move already in progress or completed
+ StorageManager sm = (StorageManager) getSystemService(STORAGE_SERVICE);
+
+ if (Objects.equals(mTargetVolumeInfo.getFsUuid(),
+ sm.getPrimaryStorageVolume().getUuid())) {
+ // The data is already on the target volume
+ showMigrationSuccessToast();
+ } else {
+ // The data is most likely in the process of being moved
+ Log.e(TAG, "Storage migration failure", e);
+ showMigrationFailureToast();
+ }
+ finish();
+ } catch (IllegalStateException e) {
+ showMigrationFailureToast();
+ finish();
+ }
+ }
+
+ private void showMigrationSuccessToast() {
+ Toast.makeText(MigrateStorageActivity.this,
+ getString(R.string.storage_wizard_migrate_toast_success, mTargetVolumeDesc),
+ Toast.LENGTH_SHORT).show();
+ }
+
+ private void showMigrationFailureToast() {
+ Toast.makeText(MigrateStorageActivity.this,
+ getString(R.string.storage_wizard_migrate_toast_failure, mTargetVolumeDesc),
+ Toast.LENGTH_SHORT).show();
}
public static class MigrateConfirmationStepFragment extends GuidedStepFragment {