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

Commit 4a0e698b authored by Jerry Chang's avatar Jerry Chang Committed by Android (Google) Code Review
Browse files

Merge "Enable flagging shortcut with additional activity flags" into tm-qpr-dev

parents 91f53181 d9964c1f
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);