Launch everything from the shade in full-screen stack
Bug: 27864383 Change-Id: I2925661f1c325f4385876188a5866ab6b57a8f19
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package android.widget;
|
||||
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.ActivityManager.StackId;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.ActivityThread;
|
||||
import android.app.Application;
|
||||
@@ -228,6 +229,11 @@ public class RemoteViews implements Parcelable, Filter {
|
||||
|
||||
public boolean onClickHandler(View view, PendingIntent pendingIntent,
|
||||
Intent fillInIntent) {
|
||||
return onClickHandler(view, pendingIntent, fillInIntent, StackId.INVALID_STACK_ID);
|
||||
}
|
||||
|
||||
public boolean onClickHandler(View view, PendingIntent pendingIntent,
|
||||
Intent fillInIntent, int launchStackId) {
|
||||
try {
|
||||
// TODO: Unregister this handler if PendingIntent.FLAG_ONE_SHOT?
|
||||
Context context = view.getContext();
|
||||
@@ -239,6 +245,10 @@ public class RemoteViews implements Parcelable, Filter {
|
||||
0, 0,
|
||||
view.getMeasuredWidth(), view.getMeasuredHeight());
|
||||
}
|
||||
|
||||
if (launchStackId != StackId.INVALID_STACK_ID) {
|
||||
opts.setLaunchStackId(launchStackId);
|
||||
}
|
||||
context.startIntentSender(
|
||||
pendingIntent.getIntentSender(), fillInIntent,
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK,
|
||||
|
||||
@@ -19,7 +19,9 @@ package com.android.systemui.statusbar;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManager.StackId;
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.KeyguardManager;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
@@ -347,7 +349,7 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
}, afterKeyguardGone);
|
||||
return true;
|
||||
} else {
|
||||
return super.onClickHandler(view, pendingIntent, fillInIntent);
|
||||
return superOnClickHandler(view, pendingIntent, fillInIntent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,7 +386,8 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
|
||||
private boolean superOnClickHandler(View view, PendingIntent pendingIntent,
|
||||
Intent fillInIntent) {
|
||||
return super.onClickHandler(view, pendingIntent, fillInIntent);
|
||||
return super.onClickHandler(view, pendingIntent, fillInIntent,
|
||||
StackId.FULLSCREEN_WORKSPACE_STACK_ID);
|
||||
}
|
||||
|
||||
private boolean handleRemoteInput(View view, PendingIntent pendingIntent, Intent fillInIntent) {
|
||||
@@ -990,7 +993,7 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
}
|
||||
TaskStackBuilder.create(mContext)
|
||||
.addNextIntentWithParentStack(intent)
|
||||
.startActivities(null,
|
||||
.startActivities(getActivityOptions(),
|
||||
new UserHandle(UserHandle.getUserId(appUid)));
|
||||
overrideActivityPendingAppTransition(keyguardShowing);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1740,7 +1743,7 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
try {
|
||||
intent.send();
|
||||
intent.send(null, 0, null, null, null, null, getActivityOptions());
|
||||
} catch (PendingIntent.CanceledException e) {
|
||||
// the stack trace isn't very helpful here.
|
||||
// Just log the exception message.
|
||||
@@ -1848,7 +1851,8 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
}
|
||||
}
|
||||
try {
|
||||
intent.send();
|
||||
intent.send(null, 0, null, null, null, null,
|
||||
getActivityOptions());
|
||||
} catch (PendingIntent.CanceledException e) {
|
||||
// the stack trace isn't very helpful here.
|
||||
// Just log the exception message.
|
||||
@@ -1924,6 +1928,14 @@ public abstract class BaseStatusBar extends SystemUI implements
|
||||
}
|
||||
}
|
||||
|
||||
protected Bundle getActivityOptions() {
|
||||
// Anything launched from the notification shade should always go into the
|
||||
// fullscreen stack.
|
||||
ActivityOptions options = ActivityOptions.makeBasic();
|
||||
options.setLaunchStackId(StackId.FULLSCREEN_WORKSPACE_STACK_ID);
|
||||
return options.toBundle();
|
||||
}
|
||||
|
||||
protected void visibilityChanged(boolean visible) {
|
||||
if (mVisible != visible) {
|
||||
mVisible = visible;
|
||||
|
||||
@@ -21,7 +21,9 @@ import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.annotation.NonNull;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManager.StackId;
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.IActivityManager;
|
||||
import android.app.Notification;
|
||||
import android.app.PendingIntent;
|
||||
@@ -3091,8 +3093,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
null, mContext.getBasePackageName(),
|
||||
intent,
|
||||
intent.resolveTypeIfNeeded(mContext.getContentResolver()),
|
||||
null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null, null,
|
||||
UserHandle.CURRENT.getIdentifier());
|
||||
null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null,
|
||||
getActivityOptions(), UserHandle.CURRENT.getIdentifier());
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Unable to start activity", e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user