Loading packages/BackupRestoreConfirmation/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ android:title="" android:windowSoftInputMode="stateAlwaysHidden" android:excludeFromRecents="true" android:launchMode="singleTop" android:exported="true" > </activity> </application> Loading packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java +65 −22 Original line number Diff line number Diff line Loading @@ -52,7 +52,9 @@ public class BackupRestoreConfirmation extends Activity { static final String TAG = "BackupRestoreConfirmation"; static final boolean DEBUG = true; static final String DID_ACKNOWLEDGE = "did_acknowledge"; static final String KEY_DID_ACKNOWLEDGE = "did_acknowledge"; static final String KEY_TOKEN = "token"; static final String KEY_ACTION = "action"; static final int MSG_START_BACKUP = 1; static final int MSG_BACKUP_PACKAGE = 2; Loading @@ -69,6 +71,7 @@ public class BackupRestoreConfirmation extends Activity { int mToken; boolean mIsEncrypted; boolean mDidAcknowledge; String mAction; TextView mStatusView; TextView mCurPassword; Loading Loading @@ -134,26 +137,9 @@ public class BackupRestoreConfirmation extends Activity { super.onCreate(icicle); final Intent intent = getIntent(); final String action = intent.getAction(); final int layoutId; final int titleId; if (action.equals(FullBackup.FULL_BACKUP_INTENT_ACTION)) { layoutId = R.layout.confirm_backup; titleId = R.string.backup_confirm_title; } else if (action.equals(FullBackup.FULL_RESTORE_INTENT_ACTION)) { layoutId = R.layout.confirm_restore; titleId = R.string.restore_confirm_title; } else { Slog.w(TAG, "Backup/restore confirmation activity launched with invalid action!"); finish(); return; } mToken = intent.getIntExtra(FullBackup.CONF_TOKEN_INTENT_EXTRA, -1); if (mToken < 0) { Slog.e(TAG, "Backup/restore confirmation requested but no token passed!"); finish(); boolean tokenValid = setTokenOrFinish(intent, icicle); if (!tokenValid) { // already called finish() return; } Loading @@ -169,6 +155,61 @@ public class BackupRestoreConfirmation extends Activity { mObserver.setHandler(mHandler); } setViews(intent, icicle); } @Override public void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); boolean tokenValid = setTokenOrFinish(intent, null); if (!tokenValid) { // already called finish() return; } setViews(intent, null); } private boolean setTokenOrFinish(Intent intent, Bundle icicle) { mToken = intent.getIntExtra(FullBackup.CONF_TOKEN_INTENT_EXTRA, -1); // for relaunch, we try to use the last token before exit if (icicle != null) { mToken = icicle.getInt(KEY_TOKEN, mToken); } if (mToken < 0) { Slog.e(TAG, "Backup/restore confirmation requested but no token passed!"); finish(); return false; } return true; } private void setViews(Intent intent, Bundle icicle) { mAction = intent.getAction(); // for relaunch, we try to use the last action before exit if (icicle != null) { mAction = icicle.getString(KEY_ACTION, mAction); } final int layoutId; final int titleId; if (mAction.equals(FullBackup.FULL_BACKUP_INTENT_ACTION)) { layoutId = R.layout.confirm_backup; titleId = R.string.backup_confirm_title; } else if (mAction.equals(FullBackup.FULL_RESTORE_INTENT_ACTION)) { layoutId = R.layout.confirm_restore; titleId = R.string.restore_confirm_title; } else { Slog.w(TAG, "Backup/restore confirmation activity launched with invalid action!"); finish(); return; } setTitle(titleId); setContentView(layoutId); Loading Loading @@ -202,7 +243,7 @@ public class BackupRestoreConfirmation extends Activity { // if we're a relaunch we may need to adjust button enable state if (icicle != null) { mDidAcknowledge = icicle.getBoolean(DID_ACKNOWLEDGE, false); mDidAcknowledge = icicle.getBoolean(KEY_DID_ACKNOWLEDGE, false); mAllowButton.setEnabled(!mDidAcknowledge); mDenyButton.setEnabled(!mDidAcknowledge); } Loading Loading @@ -249,7 +290,9 @@ public class BackupRestoreConfirmation extends Activity { @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean(DID_ACKNOWLEDGE, mDidAcknowledge); outState.putBoolean(KEY_DID_ACKNOWLEDGE, mDidAcknowledge); outState.putInt(KEY_TOKEN, mToken); outState.putString(KEY_ACTION, mAction); } void sendAcknowledgement(int token, boolean allow, IFullBackupRestoreObserver observer) { Loading services/backup/java/com/android/server/backup/BackupManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2638,7 +2638,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { confIntent.setClassName("com.android.backupconfirm", "com.android.backupconfirm.BackupRestoreConfirmation"); confIntent.putExtra(FullBackup.CONF_TOKEN_INTENT_EXTRA, token); confIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); confIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); mContext.startActivityAsUser(confIntent, UserHandle.SYSTEM); } catch (ActivityNotFoundException e) { return false; Loading Loading
packages/BackupRestoreConfirmation/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ android:title="" android:windowSoftInputMode="stateAlwaysHidden" android:excludeFromRecents="true" android:launchMode="singleTop" android:exported="true" > </activity> </application> Loading
packages/BackupRestoreConfirmation/src/com/android/backupconfirm/BackupRestoreConfirmation.java +65 −22 Original line number Diff line number Diff line Loading @@ -52,7 +52,9 @@ public class BackupRestoreConfirmation extends Activity { static final String TAG = "BackupRestoreConfirmation"; static final boolean DEBUG = true; static final String DID_ACKNOWLEDGE = "did_acknowledge"; static final String KEY_DID_ACKNOWLEDGE = "did_acknowledge"; static final String KEY_TOKEN = "token"; static final String KEY_ACTION = "action"; static final int MSG_START_BACKUP = 1; static final int MSG_BACKUP_PACKAGE = 2; Loading @@ -69,6 +71,7 @@ public class BackupRestoreConfirmation extends Activity { int mToken; boolean mIsEncrypted; boolean mDidAcknowledge; String mAction; TextView mStatusView; TextView mCurPassword; Loading Loading @@ -134,26 +137,9 @@ public class BackupRestoreConfirmation extends Activity { super.onCreate(icicle); final Intent intent = getIntent(); final String action = intent.getAction(); final int layoutId; final int titleId; if (action.equals(FullBackup.FULL_BACKUP_INTENT_ACTION)) { layoutId = R.layout.confirm_backup; titleId = R.string.backup_confirm_title; } else if (action.equals(FullBackup.FULL_RESTORE_INTENT_ACTION)) { layoutId = R.layout.confirm_restore; titleId = R.string.restore_confirm_title; } else { Slog.w(TAG, "Backup/restore confirmation activity launched with invalid action!"); finish(); return; } mToken = intent.getIntExtra(FullBackup.CONF_TOKEN_INTENT_EXTRA, -1); if (mToken < 0) { Slog.e(TAG, "Backup/restore confirmation requested but no token passed!"); finish(); boolean tokenValid = setTokenOrFinish(intent, icicle); if (!tokenValid) { // already called finish() return; } Loading @@ -169,6 +155,61 @@ public class BackupRestoreConfirmation extends Activity { mObserver.setHandler(mHandler); } setViews(intent, icicle); } @Override public void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); boolean tokenValid = setTokenOrFinish(intent, null); if (!tokenValid) { // already called finish() return; } setViews(intent, null); } private boolean setTokenOrFinish(Intent intent, Bundle icicle) { mToken = intent.getIntExtra(FullBackup.CONF_TOKEN_INTENT_EXTRA, -1); // for relaunch, we try to use the last token before exit if (icicle != null) { mToken = icicle.getInt(KEY_TOKEN, mToken); } if (mToken < 0) { Slog.e(TAG, "Backup/restore confirmation requested but no token passed!"); finish(); return false; } return true; } private void setViews(Intent intent, Bundle icicle) { mAction = intent.getAction(); // for relaunch, we try to use the last action before exit if (icicle != null) { mAction = icicle.getString(KEY_ACTION, mAction); } final int layoutId; final int titleId; if (mAction.equals(FullBackup.FULL_BACKUP_INTENT_ACTION)) { layoutId = R.layout.confirm_backup; titleId = R.string.backup_confirm_title; } else if (mAction.equals(FullBackup.FULL_RESTORE_INTENT_ACTION)) { layoutId = R.layout.confirm_restore; titleId = R.string.restore_confirm_title; } else { Slog.w(TAG, "Backup/restore confirmation activity launched with invalid action!"); finish(); return; } setTitle(titleId); setContentView(layoutId); Loading Loading @@ -202,7 +243,7 @@ public class BackupRestoreConfirmation extends Activity { // if we're a relaunch we may need to adjust button enable state if (icicle != null) { mDidAcknowledge = icicle.getBoolean(DID_ACKNOWLEDGE, false); mDidAcknowledge = icicle.getBoolean(KEY_DID_ACKNOWLEDGE, false); mAllowButton.setEnabled(!mDidAcknowledge); mDenyButton.setEnabled(!mDidAcknowledge); } Loading Loading @@ -249,7 +290,9 @@ public class BackupRestoreConfirmation extends Activity { @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean(DID_ACKNOWLEDGE, mDidAcknowledge); outState.putBoolean(KEY_DID_ACKNOWLEDGE, mDidAcknowledge); outState.putInt(KEY_TOKEN, mToken); outState.putString(KEY_ACTION, mAction); } void sendAcknowledgement(int token, boolean allow, IFullBackupRestoreObserver observer) { Loading
services/backup/java/com/android/server/backup/BackupManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2638,7 +2638,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { confIntent.setClassName("com.android.backupconfirm", "com.android.backupconfirm.BackupRestoreConfirmation"); confIntent.putExtra(FullBackup.CONF_TOKEN_INTENT_EXTRA, token); confIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); confIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); mContext.startActivityAsUser(confIntent, UserHandle.SYSTEM); } catch (ActivityNotFoundException e) { return false; Loading