Merge "Enable flagging shortcuts to launch properly in a bubble" into rvc-dev am: a0f44693f5 am: 706ab8953b
Change-Id: I596a4d31d997462923f99358eea40894fbd9a42e
This commit is contained in:
@@ -265,6 +265,14 @@ public class ActivityOptions {
|
|||||||
private static final String KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING =
|
private static final String KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING =
|
||||||
"android:activity.disallowEnterPictureInPictureWhileLaunching";
|
"android:activity.disallowEnterPictureInPictureWhileLaunching";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates flags should be applied to the launching activity such that it will behave
|
||||||
|
* correctly in a bubble.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
private static final String KEY_APPLY_ACTIVITY_FLAGS_FOR_BUBBLES =
|
||||||
|
"android:activity.applyActivityFlagsForBubbles";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For Activity transitions, the calling Activity's TransitionListener used to
|
* For Activity transitions, the calling Activity's TransitionListener used to
|
||||||
* notify the called Activity when the shared element and the exit transitions
|
* notify the called Activity when the shared element and the exit transitions
|
||||||
@@ -354,6 +362,7 @@ public class ActivityOptions {
|
|||||||
private int mSplitScreenCreateMode = SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
|
private int mSplitScreenCreateMode = SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
|
||||||
private boolean mLockTaskMode = false;
|
private boolean mLockTaskMode = false;
|
||||||
private boolean mDisallowEnterPictureInPictureWhileLaunching;
|
private boolean mDisallowEnterPictureInPictureWhileLaunching;
|
||||||
|
private boolean mApplyActivityFlagsForBubbles;
|
||||||
private boolean mTaskAlwaysOnTop;
|
private boolean mTaskAlwaysOnTop;
|
||||||
private boolean mTaskOverlay;
|
private boolean mTaskOverlay;
|
||||||
private boolean mTaskOverlayCanResume;
|
private boolean mTaskOverlayCanResume;
|
||||||
@@ -1033,6 +1042,8 @@ public class ActivityOptions {
|
|||||||
SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT);
|
SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT);
|
||||||
mDisallowEnterPictureInPictureWhileLaunching = opts.getBoolean(
|
mDisallowEnterPictureInPictureWhileLaunching = opts.getBoolean(
|
||||||
KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING, false);
|
KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING, false);
|
||||||
|
mApplyActivityFlagsForBubbles = opts.getBoolean(
|
||||||
|
KEY_APPLY_ACTIVITY_FLAGS_FOR_BUBBLES, false);
|
||||||
if (opts.containsKey(KEY_ANIM_SPECS)) {
|
if (opts.containsKey(KEY_ANIM_SPECS)) {
|
||||||
Parcelable[] specs = opts.getParcelableArray(KEY_ANIM_SPECS);
|
Parcelable[] specs = opts.getParcelableArray(KEY_ANIM_SPECS);
|
||||||
mAnimSpecs = new AppTransitionAnimationSpec[specs.length];
|
mAnimSpecs = new AppTransitionAnimationSpec[specs.length];
|
||||||
@@ -1465,6 +1476,16 @@ public class ActivityOptions {
|
|||||||
return mDisallowEnterPictureInPictureWhileLaunching;
|
return mDisallowEnterPictureInPictureWhileLaunching;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
public void setApplyActivityFlagsForBubbles(boolean apply) {
|
||||||
|
mApplyActivityFlagsForBubbles = apply;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
public boolean isApplyActivityFlagsForBubbles() {
|
||||||
|
return mApplyActivityFlagsForBubbles;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the current values in this ActivityOptions from those supplied
|
* Update the current values in this ActivityOptions from those supplied
|
||||||
* in <var>otherOptions</var>. Any values
|
* in <var>otherOptions</var>. Any values
|
||||||
@@ -1663,6 +1684,9 @@ public class ActivityOptions {
|
|||||||
b.putBoolean(KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING,
|
b.putBoolean(KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING,
|
||||||
mDisallowEnterPictureInPictureWhileLaunching);
|
mDisallowEnterPictureInPictureWhileLaunching);
|
||||||
}
|
}
|
||||||
|
if (mApplyActivityFlagsForBubbles) {
|
||||||
|
b.putBoolean(KEY_APPLY_ACTIVITY_FLAGS_FOR_BUBBLES, mApplyActivityFlagsForBubbles);
|
||||||
|
}
|
||||||
if (mAnimSpecs != null) {
|
if (mAnimSpecs != null) {
|
||||||
b.putParcelableArray(KEY_ANIM_SPECS, mAnimSpecs);
|
b.putParcelableArray(KEY_ANIM_SPECS, mAnimSpecs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ public class BubbleExpandedView extends LinearLayout {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (!mIsOverflow && mBubble.usingShortcutInfo()) {
|
if (!mIsOverflow && mBubble.usingShortcutInfo()) {
|
||||||
|
options.setApplyActivityFlagsForBubbles(true);
|
||||||
mActivityView.startShortcutActivity(mBubble.getShortcutInfo(),
|
mActivityView.startShortcutActivity(mBubble.getShortcutInfo(),
|
||||||
options, null /* sourceBounds */);
|
options, null /* sourceBounds */);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -16,11 +16,15 @@
|
|||||||
|
|
||||||
package com.android.server.pm;
|
package com.android.server.pm;
|
||||||
|
|
||||||
|
import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
|
||||||
|
import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.annotation.UserIdInt;
|
import android.annotation.UserIdInt;
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityManagerInternal;
|
import android.app.ActivityManagerInternal;
|
||||||
|
import android.app.ActivityOptions;
|
||||||
import android.app.AppGlobals;
|
import android.app.AppGlobals;
|
||||||
import android.app.IApplicationThread;
|
import android.app.IApplicationThread;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
@@ -864,6 +868,14 @@ public class LauncherAppsService extends SystemService {
|
|||||||
}
|
}
|
||||||
// Note the target activity doesn't have to be exported.
|
// Note the target activity doesn't have to be exported.
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
intents[0].setSourceBounds(sourceBounds);
|
intents[0].setSourceBounds(sourceBounds);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user