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

Commit 0effee88 authored by Tony Mak's avatar Tony Mak Committed by Android (Google) Code Review
Browse files

Merge "Use FLAG_ACTIVITY_TASK_ON_HOME to make sure back button brings user to home" into nyc-dev

parents 32dd8484 4291c76e
Loading
Loading
Loading
Loading
+8 −10
Original line number Diff line number Diff line
@@ -11422,18 +11422,16 @@ public final class ActivityManagerService extends ActivityManagerNative
                try {
                    final int currentUserId = mUserController.getCurrentUserIdLocked();
                    // Get the focused task before launching launcher.
                    final int taskId = (mFocusedActivity == null)
                            ? -1 : mFocusedActivity.task.taskId;
                    startHomeActivityLocked(currentUserId, "notifyLockedProfile");
                    if (mUserController.isLockScreenDisabled(currentUserId)) {
                        // If there is no device lock, we first go to launcher and then resume the
                        // original task. Work challenge will be shown because we intercepted
                        // startActivityFromRecentsInner and the reason why we switch to home stack
                        // first is to prevent pressing back button brings user back to the work
                        // app.
                        if (taskId != -1) {
                            startActivityFromRecentsInner(taskId, null);
                        // If there is no device lock, we will show the profile's credential page.
                        // startActivityFromRecentsInner is intercepted and will forward user to it.
                        if (mFocusedActivity != null) {
                            startActivityFromRecentsInner(mFocusedActivity.task.taskId, null);
                        }
                    } else {
                        // Showing launcher to avoid user entering credential twice.
                        startHomeActivityLocked(currentUserId, "notifyLockedProfile");
                    }
                } finally {
                    Binder.restoreCallingIdentity(ident);
+3 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static android.content.Intent.EXTRA_PACKAGE_NAME;
import static android.content.Intent.EXTRA_TASK_ID;
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.Intent.FLAG_ACTIVITY_TASK_ON_HOME;
import static android.content.pm.ApplicationInfo.FLAG_SUSPENDED;

import android.app.KeyguardManager;
@@ -192,14 +193,14 @@ class ActivityStartInterceptor {
                Binder.getCallingUid(), userId, null, null, 0, new Intent[]{ intent },
                new String[]{ resolvedType },
                FLAG_CANCEL_CURRENT | FLAG_ONE_SHOT | FLAG_IMMUTABLE, null);
        final int flags = intent.getFlags();
        final KeyguardManager km = (KeyguardManager) mService.mContext
                .getSystemService(KEYGUARD_SERVICE);
        final Intent newIntent = km.createConfirmDeviceCredentialIntent(null, null, userId);
        if (newIntent == null) {
            return null;
        }
        newIntent.setFlags(flags | FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        newIntent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS |
                FLAG_ACTIVITY_TASK_ON_HOME);
        newIntent.putExtra(EXTRA_PACKAGE_NAME, aInfo.packageName);
        newIntent.putExtra(EXTRA_INTENT, new IntentSender(target));
        return newIntent;