diff options
| author | 2023-03-27 19:17:10 +0900 | |
|---|---|---|
| committer | 2023-12-07 03:10:01 +0000 | |
| commit | f974d342d6cb0f7a0035c7ebff01acc9d11c8f05 (patch) | |
| tree | 7517b052948eb02303fa9ea49c9cdb016947dc66 | |
| parent | dff1d0ff15ee595effd4cab67b6150a594f0c4a5 (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.java | 12 |
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); |