From a945243b5c259933145d11f1e177a16388b82859 Mon Sep 17 00:00:00 2001 From: Jonathan Scott Date: Tue, 30 Apr 2019 15:52:52 +0100 Subject: [PATCH 1/2] [RESTRICT AUTOMERGE] Make ScreenPinningSettings behaviour consistent with LockTaskController. Bug: 127605586 Test: Manual Change-Id: Id85632b5e6975fc5f92d6e8126a6603a07f097e1 (cherry picked from commit 687b18067cb3bf28282376b311ece73b1c893254) --- .../settings/security/ScreenPinningSettings.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/security/ScreenPinningSettings.java b/src/com/android/settings/security/ScreenPinningSettings.java index 6e4856ee423..0af7b7273df 100644 --- a/src/com/android/settings/security/ScreenPinningSettings.java +++ b/src/com/android/settings/security/ScreenPinningSettings.java @@ -115,9 +115,13 @@ public class ScreenPinningSettings extends SettingsPreferenceFragment } private boolean isScreenLockUsed() { - int def = getCurrentSecurityTitle() != R.string.screen_pinning_unlock_none ? 1 : 0; - return Settings.Secure.getInt(getContentResolver(), - Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, def) != 0; + // This functionality should be kept consistent with + // com.android.server.wm.LockTaskController (see b/127605586) + int defaultValueIfSettingNull = mLockPatternUtils.isSecure(UserHandle.myUserId()) ? 1 : 0; + return Settings.Secure.getInt( + getContentResolver(), + Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, + defaultValueIfSettingNull) != 0; } private boolean setScreenLockUsed(boolean isEnabled) { From 6183b9b1acfa45e2dc6fcf60c9f06dca08bae408 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Fri, 8 Mar 2019 16:19:30 +0800 Subject: [PATCH 2/2] Do not allow draw on top for App notification settings Fixes: 119115683 Test: manual Change-Id: Ib7b878a23b4a99171c58b5de992fb87feca8a28a Merged-In: Ib7b878a23b4a99171c58b5de992fb87feca8a28a (cherry picked from commit fe86a2a51f0b8e01e5f595bd60edc594eef58aba) (cherry picked from commit 9fa8329b02d5db5c782ca815fd955ee7bceb5c86) --- .../notification/AppNotificationSettings.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java index 99e94589cc5..bbfbe5ea86e 100644 --- a/src/com/android/settings/notification/AppNotificationSettings.java +++ b/src/com/android/settings/notification/AppNotificationSettings.java @@ -16,6 +16,8 @@ package com.android.settings.notification; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.app.NotificationChannel; import android.app.NotificationChannelGroup; import android.content.Context; @@ -28,6 +30,8 @@ import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import android.util.Log; +import android.view.Window; +import android.view.WindowManager; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; @@ -81,6 +85,9 @@ public class AppNotificationSettings extends NotificationSettingsBase { public void onResume() { super.onResume(); + getActivity().getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + android.util.EventLog.writeEvent(0x534e4554, "119115683", -1, ""); + if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) { Log.w(TAG, "Missing package or uid or packageinfo"); finish(); @@ -114,6 +121,15 @@ public class AppNotificationSettings extends NotificationSettingsBase { updatePreferenceStates(); } + @Override + public void onPause() { + super.onPause(); + final Window window = getActivity().getWindow(); + final WindowManager.LayoutParams attrs = window.getAttributes(); + attrs.privateFlags &= ~PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + window.setAttributes(attrs); + } + @Override protected String getLogTag() { return TAG;