From 7f72982b4ece3dc36a7075a1b0129baa7c4a9bf8 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 13 Dec 2017 15:27:10 -0800 Subject: [PATCH] Do not show keyguard dialogs on AoD. Dissmiss them if the user presses the power button or lets the device sleep. Change-Id: I82ae15c2d03cbd39a3dfecf24fadcb493cbe3bfb Fixes: 67017037 Test: Type wrong PIN, wait for dialog, press power button. Test: Type wrong PIN, wait for dialog, wait for screen timeout. --- .../keyguard/KeyguardSecurityContainer.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 27bc599f7f52b..9f393215c9bd2 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -49,6 +49,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe private boolean mIsVerifyUnlockOnly; private SecurityMode mCurrentSecuritySelection = SecurityMode.Invalid; private SecurityCallback mSecurityCallback; + private AlertDialog mAlertDialog; private final KeyguardUpdateMonitor mUpdateMonitor; @@ -95,6 +96,10 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe @Override public void onPause() { + if (mAlertDialog != null) { + mAlertDialog.dismiss(); + mAlertDialog = null; + } if (mCurrentSecuritySelection != SecurityMode.None) { getSecurityView(mCurrentSecuritySelection).onPause(); } @@ -174,16 +179,20 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe } private void showDialog(String title, String message) { - final AlertDialog dialog = new AlertDialog.Builder(mContext) + if (mAlertDialog != null) { + mAlertDialog.dismiss(); + } + + mAlertDialog = new AlertDialog.Builder(mContext) .setTitle(title) .setMessage(message) .setCancelable(false) .setNeutralButton(R.string.ok, null) .create(); if (!(mContext instanceof Activity)) { - dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); + mAlertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); } - dialog.show(); + mAlertDialog.show(); } private void showTimeoutDialog(int userId, int timeoutMs) {