KeyguardSimPinView.java revision 0a4f900463024908220d0c9bf4b291a6e1284846
1dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller/* 2dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Copyright (C) 2012 The Android Open Source Project 3dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * 4dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Licensed under the Apache License, Version 2.0 (the "License"); 5dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * you may not use this file except in compliance with the License. 6dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * You may obtain a copy of the License at 7dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * 8dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * http://www.apache.org/licenses/LICENSE-2.0 9dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * 10dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Unless required by applicable law or agreed to in writing, software 11dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * distributed under the License is distributed on an "AS IS" BASIS, 12dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * See the License for the specific language governing permissions and 14dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * limitations under the License. 15dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller */ 16dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 17dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerpackage com.android.internal.policy.impl.keyguard; 18dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 19dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.app.Activity; 20dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.app.Dialog; 21dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.app.ProgressDialog; 22dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.content.Context; 23dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.graphics.Rect; 24dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.os.RemoteException; 25dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.os.ServiceManager; 26dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 27dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.telephony.ITelephony; 28dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.widget.LockPatternUtils; 29dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.widget.PasswordEntryKeyboardHelper; 30dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.widget.PasswordEntryKeyboardView; 31dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.R; 32dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 339cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Millerimport android.text.Editable; 349cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Millerimport android.text.TextWatcher; 35dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.util.AttributeSet; 36dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.view.KeyEvent; 374b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Millerimport android.view.MotionEvent; 38dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.view.View; 39dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.view.WindowManager; 40dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.view.inputmethod.EditorInfo; 41dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.widget.EditText; 42dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.widget.LinearLayout; 43dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.widget.TextView; 44dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.widget.TextView.OnEditorActionListener; 45dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 46dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller/** 47dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Displays a dialer like interface to unlock the SIM PIN. 48dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller */ 49dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerpublic class KeyguardSimPinView extends LinearLayout 509cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller implements KeyguardSecurityView, OnEditorActionListener, TextWatcher { 51dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 52dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private EditText mPinEntry; 53dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private ProgressDialog mSimUnlockProgressDialog = null; 54dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private KeyguardSecurityCallback mCallback; 55dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private PasswordEntryKeyboardView mKeyboardView; 56dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private PasswordEntryKeyboardHelper mKeyboardHelper; 57dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private LockPatternUtils mLockPatternUtils; 580ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller private SecurityMessageDisplay mSecurityMessageDisplay; 59dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 604b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller private volatile boolean mSimCheckInProgress; 614b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller 62dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public KeyguardSimPinView(Context context) { 63dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller this(context, null); 64dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 65dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 66dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public KeyguardSimPinView(Context context, AttributeSet attrs) { 67dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller super(context, attrs); 68dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mLockPatternUtils = new LockPatternUtils(getContext()); 69dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 70dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 71dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void setKeyguardCallback(KeyguardSecurityCallback callback) { 72dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mCallback = callback; 73dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 74dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 75dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 76dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller protected void onFinishInflate() { 77dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller super.onFinishInflate(); 78dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 79dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mPinEntry = (EditText) findViewById(R.id.sim_pin_entry); 80dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mPinEntry.setOnEditorActionListener(this); 819cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller mPinEntry.addTextChangedListener(this); 82dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 83dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard); 843af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false, 853af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller new int[] { 863af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller R.xml.kg_password_kbd_numeric, 873af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller com.android.internal.R.xml.password_kbd_qwerty, 883af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller com.android.internal.R.xml.password_kbd_qwerty_shifted, 893af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller com.android.internal.R.xml.password_kbd_symbols, 903af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller com.android.internal.R.xml.password_kbd_symbols_shift 913af630c8d18bcf4b23a5a308917319dd04cc8ed2Jim Miller }); 92dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mKeyboardHelper.setKeyboardMode(PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC); 93dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mKeyboardHelper.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled()); 94dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 95dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller final View deleteButton = findViewById(R.id.delete_button); 96dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (deleteButton != null) { 97dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller deleteButton.setOnClickListener(new OnClickListener() { 98dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onClick(View v) { 99dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mKeyboardHelper.handleBackspace(); 100dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 101dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller }); 102dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 103dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller reset(); 104dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 105dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 106dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 107dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) { 108dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return mPinEntry.requestFocus(direction, previouslyFocusedRect); 109dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 110dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 111dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void reset() { 112dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // start fresh 1130ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller if (mSecurityMessageDisplay != null) { 1140a4f900463024908220d0c9bf4b291a6e1284846Adam Cohen mSecurityMessageDisplay.setMessage(R.string.kg_sim_pin_instructions, true); 1150ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller } 116dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 117dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // make sure that the number of entered digits is consistent when we 118dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // erase the SIM unlock code, including orientation changes. 119dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mPinEntry.setText(""); 120dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mPinEntry.requestFocus(); 121dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 122dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 123dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller /** {@inheritDoc} */ 124dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void cleanUp() { 125dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // dismiss the dialog. 126dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (mSimUnlockProgressDialog != null) { 127dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog.dismiss(); 128dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog = null; 129dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 130dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 131dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 132dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller /** 133dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Since the IPC can block, we want to run the request in a separate thread 134dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * with a callback. 135dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller */ 136dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private abstract class CheckSimPin extends Thread { 137dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private final String mPin; 138dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 139dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller protected CheckSimPin(String pin) { 140dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mPin = pin; 141dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 142dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 1434b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller abstract void onSimCheckResponse(boolean success); 144dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 145dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 146dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void run() { 147dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller try { 148dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller final boolean result = ITelephony.Stub.asInterface(ServiceManager 149dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller .checkService("phone")).supplyPin(mPin); 150dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller post(new Runnable() { 151dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void run() { 1524b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller onSimCheckResponse(result); 153dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 154dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller }); 155dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } catch (RemoteException e) { 156dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller post(new Runnable() { 157dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void run() { 1584b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller onSimCheckResponse(false); 159dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 160dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller }); 161dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 162dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 163dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 164dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 165dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 166dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // Check if this was the result of hitting the enter key 1679cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); 1684b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller if (event.getAction() == MotionEvent.ACTION_DOWN && ( 1694b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller actionId == EditorInfo.IME_NULL 1704b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller || actionId == EditorInfo.IME_ACTION_DONE 1714b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller || actionId == EditorInfo.IME_ACTION_NEXT)) { 172dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller checkPin(); 173dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return true; 174dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 175dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return false; 176dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 177dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 178dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private Dialog getSimUnlockProgressDialog() { 179dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (mSimUnlockProgressDialog == null) { 180dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog = new ProgressDialog(mContext); 181dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog.setMessage( 182dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mContext.getString(R.string.kg_sim_unlock_progress_dialog_message)); 183dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog.setIndeterminate(true); 184dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog.setCancelable(false); 185dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (!(mContext instanceof Activity)) { 186dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mSimUnlockProgressDialog.getWindow().setType( 187dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 188dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 189dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 190dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return mSimUnlockProgressDialog; 191dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 192dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 193dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private void checkPin() { 194dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (mPinEntry.getText().length() < 4) { 195dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // otherwise, display a message to the user, and don't submit. 1960a4f900463024908220d0c9bf4b291a6e1284846Adam Cohen mSecurityMessageDisplay.setMessage(R.string.kg_invalid_sim_pin_hint, true); 197dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mPinEntry.setText(""); 198dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mCallback.userActivity(0); 199dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return; 200dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 201dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 202dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller getSimUnlockProgressDialog().show(); 203dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 2044b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller if (!mSimCheckInProgress) { 2054b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller mSimCheckInProgress = true; // there should be only one 2064b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller new CheckSimPin(mPinEntry.getText().toString()) { 2074b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller void onSimCheckResponse(final boolean success) { 2084b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller post(new Runnable() { 2094b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller public void run() { 2104b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller if (mSimUnlockProgressDialog != null) { 2114b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller mSimUnlockProgressDialog.hide(); 2124b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller } 2134b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller if (success) { 2144b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller // before closing the keyguard, report back that the sim is unlocked 2154b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller // so it knows right away. 2164b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller KeyguardUpdateMonitor.getInstance(getContext()).reportSimUnlocked(); 2174b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller mCallback.dismiss(true); 2184b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller } else { 2190a4f900463024908220d0c9bf4b291a6e1284846Adam Cohen mSecurityMessageDisplay.setMessage 2200a4f900463024908220d0c9bf4b291a6e1284846Adam Cohen (R.string.kg_password_wrong_pin_code, true); 2214b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller mPinEntry.setText(""); 2224b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller } 2234b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller mCallback.userActivity(0); 2244b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller mSimCheckInProgress = false; 225dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 2264b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller }); 2274b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller } 2284b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller }.start(); 2294b09dd31fb1cefcaee87e7a206f22ba31527e250Jim Miller } 230dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 231dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 232dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void setLockPatternUtils(LockPatternUtils utils) { 233dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mLockPatternUtils = utils; 234dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 235dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 236dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public boolean needsInput() { 237dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return false; // This view provides its own keypad 238dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 239dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 240dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onPause() { 241dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 242dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 243dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 244dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onResume() { 245dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller reset(); 246dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 247dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 248dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public KeyguardSecurityCallback getCallback() { 249dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return mCallback; 250dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 251dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 2529cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller @Override 2539cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller public void beforeTextChanged(CharSequence s, int start, int count, int after) { 2549cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller if (mCallback != null) { 2559cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); 2569cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller } 2579cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller } 2589cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller 2599cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller @Override 2609cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller public void onTextChanged(CharSequence s, int start, int before, int count) { 2619cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller } 2629cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller 2639cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller @Override 2649cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller public void afterTextChanged(Editable s) { 2659cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller } 2669cf2c523d82ec14632fd0db920dcc8909c0f44a5Jim Miller 2670ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller @Override 2680ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller public void setSecurityMessageDisplay(SecurityMessageDisplay display) { 2690ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller mSecurityMessageDisplay = display; 2700ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller reset(); 2710ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller } 272dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller} 273