Add toast when user tries to leave lock-to-app
The toast will describe how to exit when entered normally, but when
entered by a DPM whitelisted app it will just notify them they are in
the mode.
Bug: 15780115
Change-Id: I75ac8540c31a75ac68e34b3b5c8260e191894b39
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index dbd3638..15bae9b 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -262,6 +262,9 @@
/** If non-null then the task specified remains in front and no other tasks may be started
* until the task exits or #stopLockTaskMode() is called. */
TaskRecord mLockTaskModeTask;
+ /** Whether lock task has been entered by an authorized app and cannot
+ * be exited. */
+ private boolean mLockTaskIsLocked;
/**
* Notifies the user when entering/exiting lock-task.
*/
@@ -1670,6 +1673,7 @@
: findActivityLocked(intent, r.info);
if (intentActivity != null) {
if (isLockTaskModeViolation(intentActivity.task)) {
+ showLockTaskToast();
Slog.e(TAG, "moveTaskToFront: Attempt to violate Lock Task Mode");
return ActivityManager.START_RETURN_LOCK_TASK_MODE_VIOLATION;
}
@@ -3028,7 +3032,11 @@
return list;
}
- void setLockTaskModeLocked(TaskRecord task, boolean showHomeRecents) {
+ void showLockTaskToast() {
+ mLockTaskNotify.showToast(mLockTaskIsLocked);
+ }
+
+ void setLockTaskModeLocked(TaskRecord task, boolean isLocked) {
if (task == null) {
// Take out of lock task mode if necessary
if (mLockTaskModeTask != null) {
@@ -3052,7 +3060,7 @@
lockTaskMsg.obj = mLockTaskModeTask.intent.getComponent().getPackageName();
lockTaskMsg.arg1 = mLockTaskModeTask.userId;
lockTaskMsg.what = LOCK_TASK_START_MSG;
- lockTaskMsg.arg2 = showHomeRecents ? 1 : 0;
+ lockTaskMsg.arg2 = !isLocked ? 1 : 0;
mHandler.sendMessage(lockTaskMsg);
}