diff options
| author | 2024-12-12 14:29:31 -0800 | |
|---|---|---|
| committer | 2024-12-12 14:34:12 -0800 | |
| commit | b1612955cb7fb2f69f1e04d437bb7fabd411ff7c (patch) | |
| tree | 65f7a58437056b112ca33805d221d992f735c4dc | |
| parent | bd7cd39106eb72b7c5bcec45f02e0500bf620b9a (diff) | |
Prevent showing overlays when unarchiving
When unarchiving an app:
- Hide non-system overlays
- Disable the restore button when another window is being shown on top
of Pia
Bug: 370958259
Test: atest CtsPackageUninstallTestCases:ArchiveTest
Flag: EXEMPT.Bug fix only
Change-Id: If750c0a613136f3ad3040c544bd70ab428fe5ef2
| -rw-r--r-- | packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java | 3 | ||||
| -rw-r--r-- | packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveFragment.java | 31 |
2 files changed, 33 insertions, 1 deletions
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java index b20117d78230..c99d37bb6ce6 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java @@ -19,6 +19,7 @@ package com.android.packageinstaller; import static android.Manifest.permission; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ARCHIVED_PACKAGES; +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import android.app.Activity; import android.app.DialogFragment; @@ -53,6 +54,8 @@ public class UnarchiveActivity extends Activity { @Override public void onCreate(Bundle icicle) { + getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + super.onCreate(null); int callingUid = getLaunchedFromUid(); diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveFragment.java index 42dd382b98bc..fbb0fa4d6a57 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveFragment.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveFragment.java @@ -21,10 +21,14 @@ import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; +import android.widget.Button; public class UnarchiveFragment extends DialogFragment implements DialogInterface.OnClickListener { + private Dialog mDialog; + private Button mRestoreButton; + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { String appTitle = getArguments().getString(UnarchiveActivity.APP_TITLE); @@ -40,7 +44,32 @@ public class UnarchiveFragment extends DialogFragment implements dialogBuilder.setPositiveButton(R.string.restore, this); dialogBuilder.setNegativeButton(android.R.string.cancel, this); - return dialogBuilder.create(); + mDialog = dialogBuilder.create(); + return mDialog; + } + + @Override + public void onStart() { + super.onStart(); + if (mDialog != null) { + mRestoreButton = ((AlertDialog) mDialog).getButton(DialogInterface.BUTTON_POSITIVE); + } + } + + @Override + public void onPause() { + super.onPause(); + if (mRestoreButton != null) { + mRestoreButton.setEnabled(false); + } + } + + @Override + public void onResume() { + super.onResume(); + if (mRestoreButton != null) { + mRestoreButton.setEnabled(true); + } } @Override |