summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeongsik Mun <jeongsik.mun@samsung.corp-partner.google.com> 2023-03-27 19:17:10 +0900
committer Jeongsik Mun <jeongsik.mun@samsung.corp-partner.google.com> 2023-12-07 03:10:01 +0000
commitf974d342d6cb0f7a0035c7ebff01acc9d11c8f05 (patch)
tree7517b052948eb02303fa9ea49c9cdb016947dc66
parentdff1d0ff15ee595effd4cab67b6150a594f0c4a5 (diff)
Add a suspension check to SuspendedAppActivity
ACTION_PACKAGES_SUSPENSION_CHANGED can be delivered without suspension changes, which ends up finishing SuspendedAppActivity and CTS fails. This CL adds a check to make sure suspended state changed before finishing it. Bug: 245426112 Test: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testSuspendPackageWithPackageManager Change-Id: I74116b1c8508239b4026883916a89bfdac902bae
-rw-r--r--core/java/com/android/internal/app/SuspendedAppActivity.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/com/android/internal/app/SuspendedAppActivity.java b/core/java/com/android/internal/app/SuspendedAppActivity.java
index a5e775a461a9..389576da86b7 100644
--- a/core/java/com/android/internal/app/SuspendedAppActivity.java
+++ b/core/java/com/android/internal/app/SuspendedAppActivity.java
@@ -80,7 +80,8 @@ public class SuspendedAppActivity extends AlertActivity
// Suspension conditions were modified, dismiss any related visible dialogs.
final String[] modified = intent.getStringArrayExtra(
Intent.EXTRA_CHANGED_PACKAGE_LIST);
- if (ArrayUtils.contains(modified, mSuspendedPackage)) {
+ if (ArrayUtils.contains(modified, mSuspendedPackage)
+ && !isPackageSuspended(mSuspendedPackage)) {
if (!isFinishing()) {
Slog.w(TAG, "Package " + mSuspendedPackage + " has modified"
+ " suspension conditions while dialog was visible. Finishing.");
@@ -92,6 +93,15 @@ public class SuspendedAppActivity extends AlertActivity
}
};
+ private boolean isPackageSuspended(String packageName) {
+ try {
+ return mPm.isPackageSuspended(packageName);
+ } catch (PackageManager.NameNotFoundException ne) {
+ Slog.e(TAG, "Package " + packageName + " not found", ne);
+ }
+ return false;
+ }
+
private CharSequence getAppLabel(String packageName) {
try {
return mPm.getApplicationInfoAsUser(packageName, 0, mUserId).loadLabel(mPm);