Merge "Enable flagging shortcut with additional activity flags" into tm-qpr-dev am: 4a0e698b68 am: f11a7984f6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21013716

Change-Id: If9f4a876e960e510b389f6e12a8e6b87236e5b75
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jerry Chang
2023-02-06 04:16:31 +00:00
committed by Automerger Merge Worker
2 changed files with 33 additions and 5 deletions

View File

@@ -342,6 +342,13 @@ public class ActivityOptions extends ComponentOptions {
private static final String KEY_APPLY_ACTIVITY_FLAGS_FOR_BUBBLES =
"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
@@ -476,6 +483,7 @@ public class ActivityOptions extends ComponentOptions {
private boolean mShareIdentity = false;
private boolean mDisallowEnterPictureInPictureWhileLaunching;
private boolean mApplyActivityFlagsForBubbles;
private boolean mApplyMultipleTaskFlagForShortcut;
private boolean mTaskAlwaysOnTop;
private boolean mTaskOverlay;
private boolean mTaskOverlayCanResume;
@@ -1278,6 +1286,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];
@@ -1906,6 +1916,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
@@ -2262,6 +2282,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);
}

View File

@@ -1116,12 +1116,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);