diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 15 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/UserController.java | 5 |
2 files changed, 19 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e653d5184e4c..5aac43d910f7 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -11420,7 +11420,20 @@ public final class ActivityManagerService extends ActivityManagerNative final long ident = Binder.clearCallingIdentity(); try { final int currentUserId = mUserController.getCurrentUserIdLocked(); - startHomeActivityLocked(currentUserId, "notifyProfileLocked"); + // 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); + } + } } finally { Binder.restoreCallingIdentity(ident); } diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 59c2682bdb0f..5baba524aab4 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -39,6 +39,7 @@ import static com.android.server.am.ActivityManagerService.SYSTEM_USER_UNLOCK_MS import static com.android.server.am.ActivityManagerService.USER_SWITCH_TIMEOUT_MSG; import android.annotation.NonNull; +import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.Dialog; @@ -1340,6 +1341,10 @@ final class UserController { return km.isDeviceLocked(userId); } + boolean isLockScreenDisabled(@UserIdInt int userId) { + return mLockPatternUtils.isLockScreenDisabled(userId); + } + void dump(PrintWriter pw, boolean dumpAll) { pw.println(" mStartedUsers:"); for (int i = 0; i < mStartedUsers.size(); i++) { |