From 3f4d3b4ac257451ccc1676f65321dedb2cb1870e Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Wed, 26 Feb 2020 23:55:51 +0800 Subject: [PATCH] RESTRICT AUTOMERGE Allow LockScreenPattern to be launched in the pinning screen If work profile lock is enabled and work app is pinned, users will get a black/white screen on the phone. That's because Settings is prevented from other apps launch any pages of Settings in the pinning mode. In order to launch some pages of Settings from other apps, we add a condition to the preventive mechanism and allow the activity inherited from SettingsBaseActivity to override the condition to have the activity to be launched from other apps in the pinning mode. Bug: 137015265 Bug: 135604684 Test: manual test Change-Id: I8070de79a83350d1658efcb19e983669dad0e673 Merged-In: I8070de79a83350d1658efcb19e983669dad0e673 --- .../settings/ConfirmDeviceCredentialBaseActivity.java | 5 +++++ src/com/android/settings/SettingsActivity.java | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java index d04014852d2..82e389d075b 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java +++ b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java @@ -129,6 +129,11 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi } } + @Override + public boolean isLaunchableInTaskModePinned() { + return true; + } + public void prepareEnterAnimation() { getFragment().prepareEnterAnimation(); } diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 5c671206e98..80adec689a5 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -278,7 +278,7 @@ public class SettingsActivity extends SettingsDrawerActivity protected void onCreate(Bundle savedState) { super.onCreate(savedState); - if (isLockTaskModePinned() && !isSettingsRunOnTop()) { + if (isLockTaskModePinned() && !isSettingsRunOnTop() && !isLaunchableInTaskModePinned()) { Log.w(LOG_TAG, "Devices lock task mode pinned."); finish(); } @@ -946,6 +946,12 @@ public class SettingsActivity extends SettingsDrawerActivity return bitmap; } + /** + * @return whether or not the activity can be launched from other apps in the pinning screen. + */ + public boolean isLaunchableInTaskModePinned() { + return false; + } private boolean isLockTaskModePinned() { final ActivityManager activityManager =