From e8fed24be6345cbb3c5f1e61529f4938bfb6e505 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Fri, 3 Oct 2014 18:54:03 -0700 Subject: [PATCH] Fix "Wrong password" message shown when using BT keyboard. The code was assuming we're always using soft IME. When a physical keyboard is attached, we get two events; ACTION_DOWN and ACTION_UP. The code attempted to unlock the device twice. The second attempt failed because the TextView was cleared by the first successful attempt. Fixes bug 17690585 Change-Id: Ia92a97400b4404d0cbe86aacb727009e95914327 --- .../src/com/android/keyguard/KeyguardPasswordView.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java index e6c9e6c7c8711..dfea166fba80d 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java @@ -295,8 +295,14 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { // Check if this was the result of hitting the enter key - if (actionId == EditorInfo.IME_NULL || actionId == EditorInfo.IME_ACTION_DONE - || actionId == EditorInfo.IME_ACTION_NEXT) { + final boolean isSoftImeEvent = event == null + && (actionId == EditorInfo.IME_NULL + || actionId == EditorInfo.IME_ACTION_DONE + || actionId == EditorInfo.IME_ACTION_NEXT); + final boolean isKeyboardEnterKey = event != null + && KeyEvent.isConfirmKey(event.getKeyCode()) + && event.getAction() == KeyEvent.ACTION_DOWN; + if (isSoftImeEvent || isKeyboardEnterKey) { verifyPasswordAndUnlock(); return true; }