diff options
| author | 2023-02-06 03:19:37 +0000 | |
|---|---|---|
| committer | 2023-02-06 03:19:37 +0000 | |
| commit | 4a0e698b68b2c3e5d073c19f72ef401c4f04f5e5 (patch) | |
| tree | 3e168985ea895a63d9bc4c6cce07245894245b27 | |
| parent | 91f53181f591f608a0d09d3ac487595ff43c0c82 (diff) | |
| parent | d9964c1f3b2095c384fce2e1a656dfe40eda94b9 (diff) | |
Merge "Enable flagging shortcut with additional activity flags" into tm-qpr-dev
| -rw-r--r-- | core/java/android/app/ActivityOptions.java | 24 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/LauncherAppsService.java | 14 |
2 files changed, 33 insertions, 5 deletions
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 0c08735fbc0c..22a1a47d3d0a 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -318,6 +318,13 @@ public class ActivityOptions extends ComponentOptions { "android:activity.applyActivityFlagsForBubbles"; /** + * Indicates to apply {@link Intent#FLAG_ACTIVITY_MULTIPLE_TASK} to the launching shortcut. + * @hide + */ + private static final String KEY_APPLY_MULTIPLE_TASK_FLAG_FOR_SHORTCUT = + "android:activity.applyMultipleTaskFlagForShortcut"; + + /** * For Activity transitions, the calling Activity's TransitionListener used to * notify the called Activity when the shared element and the exit transitions * complete. @@ -449,6 +456,7 @@ public class ActivityOptions extends ComponentOptions { private boolean mLockTaskMode = false; private boolean mDisallowEnterPictureInPictureWhileLaunching; private boolean mApplyActivityFlagsForBubbles; + private boolean mApplyMultipleTaskFlagForShortcut; private boolean mTaskAlwaysOnTop; private boolean mTaskOverlay; private boolean mTaskOverlayCanResume; @@ -1246,6 +1254,8 @@ public class ActivityOptions extends ComponentOptions { KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING, false); mApplyActivityFlagsForBubbles = opts.getBoolean( KEY_APPLY_ACTIVITY_FLAGS_FOR_BUBBLES, false); + mApplyMultipleTaskFlagForShortcut = opts.getBoolean( + KEY_APPLY_MULTIPLE_TASK_FLAG_FOR_SHORTCUT, false); if (opts.containsKey(KEY_ANIM_SPECS)) { Parcelable[] specs = opts.getParcelableArray(KEY_ANIM_SPECS); mAnimSpecs = new AppTransitionAnimationSpec[specs.length]; @@ -1815,6 +1825,16 @@ public class ActivityOptions extends ComponentOptions { return mApplyActivityFlagsForBubbles; } + /** @hide */ + public void setApplyMultipleTaskFlagForShortcut(boolean apply) { + mApplyMultipleTaskFlagForShortcut = apply; + } + + /** @hide */ + public boolean isApplyMultipleTaskFlagForShortcut() { + return mApplyMultipleTaskFlagForShortcut; + } + /** * Sets a launch cookie that can be used to track the activity and task that are launch as a * result of this option. If the launched activity is a trampoline that starts another activity @@ -2143,6 +2163,10 @@ public class ActivityOptions extends ComponentOptions { if (mApplyActivityFlagsForBubbles) { b.putBoolean(KEY_APPLY_ACTIVITY_FLAGS_FOR_BUBBLES, mApplyActivityFlagsForBubbles); } + if (mApplyMultipleTaskFlagForShortcut) { + b.putBoolean(KEY_APPLY_MULTIPLE_TASK_FLAG_FOR_SHORTCUT, + mApplyMultipleTaskFlagForShortcut); + } if (mAnimSpecs != null) { b.putParcelableArray(KEY_ANIM_SPECS, mAnimSpecs); } diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index 5e0fc3bf91e7..e37222f406a9 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -1114,12 +1114,16 @@ public class LauncherAppsService extends SystemService { // Flag for bubble ActivityOptions options = ActivityOptions.fromBundle(startActivityOptions); - if (options != null && options.isApplyActivityFlagsForBubbles()) { - // Flag for bubble to make behaviour match documentLaunchMode=always. - intents[0].addFlags(FLAG_ACTIVITY_NEW_DOCUMENT); - intents[0].addFlags(FLAG_ACTIVITY_MULTIPLE_TASK); + if (options != null) { + if (options.isApplyActivityFlagsForBubbles()) { + // Flag for bubble to make behaviour match documentLaunchMode=always. + intents[0].addFlags(FLAG_ACTIVITY_NEW_DOCUMENT); + intents[0].addFlags(FLAG_ACTIVITY_MULTIPLE_TASK); + } + if (options.isApplyMultipleTaskFlagForShortcut()) { + intents[0].addFlags(FLAG_ACTIVITY_MULTIPLE_TASK); + } } - intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intents[0].setSourceBounds(sourceBounds); |