diff options
| author | 2023-03-28 12:00:45 +0000 | |
|---|---|---|
| committer | 2023-03-28 12:00:45 +0000 | |
| commit | 5dfd7f3e796311cec997877996077b9f17221a3f (patch) | |
| tree | eb31e7a3ba4dd577daf47945acb881eadc30dc13 | |
| parent | d55c38e43534180d585c728406dffaca31b5e324 (diff) | |
| parent | 1d8230474c83866090453a202f8289badca1fb68 (diff) | |
Merge "Set broadcast policy for suspension and quiet mode" into udc-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/SuspendPackageHelper.java | 6 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/UserManagerService.java | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/SuspendPackageHelper.java b/services/core/java/com/android/server/pm/SuspendPackageHelper.java index b4b8cb2a370d..ad77ef7ca975 100644 --- a/services/core/java/com/android/server/pm/SuspendPackageHelper.java +++ b/services/core/java/com/android/server/pm/SuspendPackageHelper.java @@ -28,6 +28,7 @@ import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.AppOpsManager; +import android.app.BroadcastOptions; import android.app.IActivityManager; import android.app.admin.DevicePolicyManagerInternal; import android.content.Intent; @@ -620,12 +621,15 @@ public final class SuspendPackageHelper { extras.putStringArray(Intent.EXTRA_CHANGED_PACKAGE_LIST, pkgList); extras.putIntArray(Intent.EXTRA_CHANGED_UID_LIST, uidList); final int flags = Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND; + final Bundle options = new BroadcastOptions() + .setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE) + .toBundle(); handler.post(() -> mBroadcastHelper.sendPackageBroadcast(intent, null /* pkg */, extras, flags, null /* targetPkg */, null /* finishedReceiver */, new int[]{userId}, null /* instantUserIds */, null /* broadcastAllowList */, (callingUid, intentExtras) -> BroadcastHelper.filterExtrasChangedPackageList( mPm.snapshotComputer(), callingUid, intentExtras), - null /* bOptions */)); + options)); } /** diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index a36e9f961211..927a722defac 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -1276,7 +1276,15 @@ public class UserManagerService extends IUserManager.Stub { getDevicePolicyManagerInternal().broadcastIntentToManifestReceivers( intent, parentHandle, /* requiresPermission= */ true); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND); - mContext.sendBroadcastAsUser(intent, parentHandle); + final Bundle options = new BroadcastOptions() + .setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE) + .setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT) + // Both actions use single namespace because only the final state matters. + .setDeliveryGroupMatchingKey( + Intent.ACTION_MANAGED_PROFILE_AVAILABLE /* namespace */, + String.valueOf(profileHandle.getIdentifier()) /* key */) + .toBundle(); + mContext.sendBroadcastAsUser(intent, parentHandle, /* receiverPermission= */ null, options); } @Override |