OSDN Git Service

Do not show keyguard dialogs on AoD.
authorLucas Dupin <dupin@google.com>
Wed, 13 Dec 2017 23:27:10 +0000 (15:27 -0800)
committerLucas Dupin <dupin@google.com>
Wed, 13 Dec 2017 23:42:21 +0000 (15:42 -0800)
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.

packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java

index 27bc599..9f39321 100644 (file)
@@ -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) {