From 6c2f32b3ae7885dba08a612be792062b12ca4457 Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Tue, 16 Jul 2019 17:45:46 +0800 Subject: [PATCH] Prevent accounts page directly opening in screen pinning mode In Settings there is no auth mechanism to prevent accounts page being opened in screen pinning mode. This CL makes it so that when users are trying to navigate to any pages in Settings from other apps in screen pinning mode, Settings app will directly close its page. Bug: 137015265 Bug: 135604684 Test: manual Change-Id: If26eda408a9ef6fa03ad82e5bee51bb7185950d6 Merged-In: If26eda408a9ef6fa03ad82e5bee51bb7185950d6 (cherry picked from commit f3242dab3546c019d4b79c502f7b8850d36123a5) --- .../android/settings/SettingsActivity.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index ea7874c6257..5c671206e98 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -277,6 +277,12 @@ public class SettingsActivity extends SettingsDrawerActivity @Override protected void onCreate(Bundle savedState) { super.onCreate(savedState); + + if (isLockTaskModePinned() && !isSettingsRunOnTop()) { + Log.w(LOG_TAG, "Devices lock task mode pinned."); + finish(); + } + long startTime = System.currentTimeMillis(); final FeatureFactory factory = FeatureFactory.getFactory(this); @@ -939,4 +945,19 @@ public class SettingsActivity extends SettingsDrawerActivity return bitmap; } + + + private boolean isLockTaskModePinned() { + final ActivityManager activityManager = + getApplicationContext().getSystemService(ActivityManager.class); + return activityManager.getLockTaskModeState() == ActivityManager.LOCK_TASK_MODE_PINNED; + } + + private boolean isSettingsRunOnTop() { + final ActivityManager activityManager = + getApplicationContext().getSystemService(ActivityManager.class); + final String taskPkgName = activityManager.getRunningTasks(1 /* maxNum */) + .get(0 /* index */).baseActivity.getPackageName(); + return TextUtils.equals(getPackageName(), taskPkgName); + } } \ No newline at end of file