Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9964c1f authored by Jerry Chang's avatar Jerry Chang
Browse files

Enable flagging shortcut with additional activity flags

Enable indicating to apply multiple_task flag while starting a shortcut
to split.

Bug: 265244780
Test: check the applied flags with activity start logs
Change-Id: Ia634baebeaf5f992fca40381b4a3c6bc7980017e
parent e37a7d5e
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -317,6 +317,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
@@ -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);
        }
+9 −5
Original line number Diff line number Diff line
@@ -1114,12 +1114,16 @@ public class LauncherAppsService extends SystemService {

            // Flag for bubble
            ActivityOptions options = ActivityOptions.fromBundle(startActivityOptions);
            if (options != null && options.isApplyActivityFlagsForBubbles()) {
            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);