Loading core/res/res/layout/keyguard_sim_puk_view.xml +177 −77 Original line number Diff line number Diff line Loading @@ -20,89 +20,189 @@ carrier-provided PUK code and entering a new SIM PIN for it. --> <com.android.internal.policy.impl.keyguard.KeyguardSimPukView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/res/android" android:id="@+id/keyguard_sim_puk_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical"> <LinearLayout android:layout_height="0dip" android:layout_width="match_parent" android:layout_weight="1" android:orientation="vertical" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lockscreen_sim"/> <include layout="@layout/keyguard_message_area_large" <include layout="@layout/keyguard_message_area" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <!-- Password entry field --> <!-- Note: the entire container is styled to look like the edit field, since the backspace/IME switcher looks better inside --> android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_height="0dp" android:orientation="horizontal" android:layout_marginEnd="4dip" android:layout_marginStart="4dip" android:gravity="center_vertical" android:background="#70000000"> <!-- displays dots as user enters pin --> <EditText android:id="@+id/sim_pin_entry" android:layout_weight="1" > <TextView android:id="@+id/pinEntry" android:editable="true" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:maxLines="1" android:singleLine="true" android:gravity="center_horizontal" android:layout_gravity="center_vertical" android:gravity="center" android:layout_marginStart="@*android:dimen/keyguard_lockscreen_pin_margin_left" android:textStyle="normal" android:inputType="textPassword" android:textSize="36sp" android:singleLine="true" android:cursorVisible="false" android:background="@null" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#ffffffff" android:textAppearance="@style/TextAppearance.NumPadKey" android:imeOptions="flagForceAscii|actionDone" /> <ImageButton android:id="@+id/delete_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@android:drawable/ic_input_delete" android:layout_height="match_parent" android:gravity="center_vertical" android:src="@*android:drawable/ic_input_delete" android:clickable="true" android:padding="8dip" android:paddingTop="8dip" android:paddingBottom="8dip" android:paddingLeft="24dp" android:paddingRight="24dp" android:background="?android:attr/selectableItemBackground" /> </LinearLayout> <!-- Numeric keyboard --> <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboard" <View android:layout_width="wrap_content" android:layout_height="1dp" android:background="#55FFFFFF" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="4dip" android:layout_marginEnd="4dip" android:paddingTop="4dip" android:paddingBottom="4dip" android:background="#40000000" android:keyBackground="@*android:drawable/btn_keyboard_key_ics" android:clickable="true" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key1" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="1" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key2" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="2" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key3" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="3" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key4" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="4" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key5" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="5" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key6" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="6" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal" android:layout_weight="1" > <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key7" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="7" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key8" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="8" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key9" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="9" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <Space android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key0" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="0" /> <ImageButton android:id="@+id/key_enter" style="@style/Widget.Button.NumPadKey" android:gravity="center" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" android:src="@drawable/sym_keyboard_return_holo" /> </LinearLayout> Loading core/res/res/values/symbols.xml +0 −2 Original line number Diff line number Diff line Loading @@ -1326,9 +1326,7 @@ <java-symbol type="id" name="lockPatternView" /> <java-symbol type="id" name="forgot_password_button" /> <java-symbol type="id" name="glow_pad_view" /> <java-symbol type="id" name="sim_pin_entry" /> <java-symbol type="id" name="delete_button" /> <java-symbol type="id" name="sim_pin_entry" /> <java-symbol type="id" name="keyguard_user_avatar" /> <java-symbol type="id" name="keyguard_user_name" /> <java-symbol type="id" name="keyguard_transport_control" /> Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java +68 −126 Original line number Diff line number Diff line Loading @@ -19,49 +19,30 @@ import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.graphics.Rect; import android.os.RemoteException; import android.os.ServiceManager; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; import android.text.method.DigitsKeyListener; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import com.android.internal.telephony.ITelephony; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.PasswordEntryKeyboardHelper; import com.android.internal.widget.PasswordEntryKeyboardView; import com.android.internal.R; public class KeyguardSimPukView extends LinearLayout implements View.OnClickListener, KeyguardSecurityView, OnEditorActionListener, TextWatcher { import com.android.internal.R; private View mDeleteButton; /** * Displays a PIN pad for entering a PUK (Pin Unlock Kode) provided by a carrier. */ public class KeyguardSimPukView extends KeyguardAbsKeyInputView implements KeyguardSecurityView, OnEditorActionListener, TextWatcher { private ProgressDialog mSimUnlockProgressDialog = null; private KeyguardSecurityCallback mCallback; private SecurityMessageDisplay mSecurityMessageDisplay; private PasswordEntryKeyboardView mKeyboardView; private PasswordEntryKeyboardHelper mKeyboardHelper; private LockPatternUtils mLockPatternUtils; private volatile boolean mCheckInProgress; private TextView mSimPinEntry; private String mPukText; private String mPinText; private StateMachine mStateMachine = new StateMachine(); Loading Loading @@ -95,10 +76,11 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList com.android.internal.R.string.lockscreen_sim_unlock_progress_dialog_message; updateSim(); } else { state = ENTER_PIN; // try again? msg = R.string.kg_invalid_confirm_pin_hint; } } mSimPinEntry.setText(null); mPasswordEntry.setText(null); if (msg != 0) { mSecurityMessageDisplay.setMessage(msg, true); } Loading @@ -109,7 +91,7 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList mPukText=""; state = ENTER_PUK; mSecurityMessageDisplay.setMessage(R.string.kg_puk_enter_puk_hint, true); mSimPinEntry.requestFocus(); mPasswordEntry.requestFocus(); } } Loading @@ -119,62 +101,71 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList public KeyguardSimPukView(Context context, AttributeSet attrs) { super(context, attrs); mLockPatternUtils = new LockPatternUtils(getContext()); } public void setKeyguardCallback(KeyguardSecurityCallback callback) { mCallback = callback; mLockPatternUtils = new LockPatternUtils(getContext()); public void resetState() { mStateMachine.reset(); mPasswordEntry.setEnabled(true); } @Override protected int getPasswordTextViewId() { return R.id.pinEntry; } @Override protected void onFinishInflate() { super.onFinishInflate(); mSimPinEntry = (TextView) findViewById(R.id.sim_pin_entry); mSimPinEntry.setOnEditorActionListener(this); mSimPinEntry.addTextChangedListener(this); mDeleteButton = findViewById(R.id.delete_button); mDeleteButton.setOnClickListener(this); mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard); mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false, new int[] { R.xml.kg_password_kbd_numeric, com.android.internal.R.xml.password_kbd_qwerty, com.android.internal.R.xml.password_kbd_qwerty_shifted, com.android.internal.R.xml.password_kbd_symbols, com.android.internal.R.xml.password_kbd_symbols_shift }); mKeyboardHelper.setKeyboardMode(PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC); mKeyboardHelper.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled()); mSecurityMessageDisplay = new KeyguardMessageArea.Helper(this); mSecurityMessageDisplay.setTimeout(0); // don't show ownerinfo/charging status by default reset(); } final View ok = findViewById(R.id.key_enter); if (ok != null) { ok.setOnClickListener(new View.OnClickListener() { @Override protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) { return mSimPinEntry.requestFocus(direction, previouslyFocusedRect); public void onClick(View v) { doHapticKeyClick(); verifyPasswordAndUnlock(); } }); } public boolean needsInput() { return false; // This view provides its own keypad // The delete button is of the PIN keyboard itself in some (e.g. tablet) layouts, // not a separate view View pinDelete = findViewById(R.id.delete_button); if (pinDelete != null) { pinDelete.setVisibility(View.VISIBLE); pinDelete.setOnClickListener(new OnClickListener() { public void onClick(View v) { CharSequence str = mPasswordEntry.getText(); if (str.length() > 0) { mPasswordEntry.setText(str.subSequence(0, str.length()-1)); } doHapticKeyClick(); } }); pinDelete.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View v) { mPasswordEntry.setText(""); doHapticKeyClick(); return true; } }); } public void onPause() { mPasswordEntry.setKeyListener(DigitsKeyListener.getInstance()); mPasswordEntry.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); } mPasswordEntry.requestFocus(); public void onResume() { reset(); mSecurityMessageDisplay.setTimeout(0); // don't show ownerinfo/charging status by default } @Override public void showUsabilityHint() { } /** {@inheritDoc} */ public void cleanUp() { @Override public void onPause() { // dismiss the dialog. if (mSimUnlockProgressDialog != null) { mSimUnlockProgressDialog.dismiss(); Loading Loading @@ -218,23 +209,11 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList } } public void onClick(View v) { if (v == mDeleteButton) { mSimPinEntry.requestFocus(); final Editable digits = mSimPinEntry.getEditableText(); final int len = digits.length(); if (len > 0) { digits.delete(len-1, len); } } mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); } private Dialog getSimUnlockProgressDialog() { if (mSimUnlockProgressDialog == null) { mSimUnlockProgressDialog = new ProgressDialog(mContext); mSimUnlockProgressDialog.setMessage(mContext.getString( R.string.kg_sim_unlock_progress_dialog_message)); mSimUnlockProgressDialog.setMessage( mContext.getString(R.string.kg_sim_unlock_progress_dialog_message)); mSimUnlockProgressDialog.setIndeterminate(true); mSimUnlockProgressDialog.setCancelable(false); if (!(mContext instanceof Activity)) { Loading @@ -247,8 +226,8 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList private boolean checkPuk() { // make sure the puk is at least 8 digits long. if (mSimPinEntry.getText().length() >= 8) { mPukText = mSimPinEntry.getText().toString(); if (mPasswordEntry.getText().length() >= 8) { mPukText = mPasswordEntry.getText().toString(); return true; } return false; Loading @@ -256,16 +235,16 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList private boolean checkPin() { // make sure the PIN is between 4 and 8 digits int length = mSimPinEntry.getText().length(); int length = mPasswordEntry.getText().length(); if (length >= 4 && length <= 8) { mPinText = mSimPinEntry.getText().toString(); mPinText = mPasswordEntry.getText().toString(); return true; } return false; } public boolean confirmPin() { return mPinText.equals(mSimPinEntry.getText().toString()); return mPinText.equals(mPasswordEntry.getText().toString()); } private void updateSim() { Loading Loading @@ -295,46 +274,9 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList } @Override public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { // Check if this was the result of hitting the enter key mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); if (event.getAction() == MotionEvent.ACTION_DOWN) { if (actionId == EditorInfo.IME_NULL || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) { protected void verifyPasswordAndUnlock() { mStateMachine.next(); return true; } } return false; } @Override public void setLockPatternUtils(LockPatternUtils utils) { mLockPatternUtils = utils; } @Override public void reset() { mStateMachine.reset(); } @Override public KeyguardSecurityCallback getCallback() { return mCallback; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { if (mCallback != null) { mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); } } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } } Loading
core/res/res/layout/keyguard_sim_puk_view.xml +177 −77 Original line number Diff line number Diff line Loading @@ -20,89 +20,189 @@ carrier-provided PUK code and entering a new SIM PIN for it. --> <com.android.internal.policy.impl.keyguard.KeyguardSimPukView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/res/android" android:id="@+id/keyguard_sim_puk_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical"> <LinearLayout android:layout_height="0dip" android:layout_width="match_parent" android:layout_weight="1" android:orientation="vertical" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_lockscreen_sim"/> <include layout="@layout/keyguard_message_area_large" <include layout="@layout/keyguard_message_area" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <!-- Password entry field --> <!-- Note: the entire container is styled to look like the edit field, since the backspace/IME switcher looks better inside --> android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_height="0dp" android:orientation="horizontal" android:layout_marginEnd="4dip" android:layout_marginStart="4dip" android:gravity="center_vertical" android:background="#70000000"> <!-- displays dots as user enters pin --> <EditText android:id="@+id/sim_pin_entry" android:layout_weight="1" > <TextView android:id="@+id/pinEntry" android:editable="true" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:maxLines="1" android:singleLine="true" android:gravity="center_horizontal" android:layout_gravity="center_vertical" android:gravity="center" android:layout_marginStart="@*android:dimen/keyguard_lockscreen_pin_margin_left" android:textStyle="normal" android:inputType="textPassword" android:textSize="36sp" android:singleLine="true" android:cursorVisible="false" android:background="@null" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#ffffffff" android:textAppearance="@style/TextAppearance.NumPadKey" android:imeOptions="flagForceAscii|actionDone" /> <ImageButton android:id="@+id/delete_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@android:drawable/ic_input_delete" android:layout_height="match_parent" android:gravity="center_vertical" android:src="@*android:drawable/ic_input_delete" android:clickable="true" android:padding="8dip" android:paddingTop="8dip" android:paddingBottom="8dip" android:paddingLeft="24dp" android:paddingRight="24dp" android:background="?android:attr/selectableItemBackground" /> </LinearLayout> <!-- Numeric keyboard --> <com.android.internal.widget.PasswordEntryKeyboardView android:id="@+id/keyboard" <View android:layout_width="wrap_content" android:layout_height="1dp" android:background="#55FFFFFF" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="4dip" android:layout_marginEnd="4dip" android:paddingTop="4dip" android:paddingBottom="4dip" android:background="#40000000" android:keyBackground="@*android:drawable/btn_keyboard_key_ics" android:clickable="true" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key1" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="1" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key2" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="2" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key3" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="3" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key4" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="4" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key5" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="5" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key6" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="6" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal" android:layout_weight="1" > <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key7" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="7" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key8" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="8" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key9" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="9" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <Space android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" /> <view class="com.android.internal.policy.impl.keyguard.NumPadKey" android:id="@+id/key0" style="@style/Widget.Button.NumPadKey" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" androidprv:textView="@+id/pinEntry" androidprv:digit="0" /> <ImageButton android:id="@+id/key_enter" style="@style/Widget.Button.NumPadKey" android:gravity="center" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="1" android:src="@drawable/sym_keyboard_return_holo" /> </LinearLayout> Loading
core/res/res/values/symbols.xml +0 −2 Original line number Diff line number Diff line Loading @@ -1326,9 +1326,7 @@ <java-symbol type="id" name="lockPatternView" /> <java-symbol type="id" name="forgot_password_button" /> <java-symbol type="id" name="glow_pad_view" /> <java-symbol type="id" name="sim_pin_entry" /> <java-symbol type="id" name="delete_button" /> <java-symbol type="id" name="sim_pin_entry" /> <java-symbol type="id" name="keyguard_user_avatar" /> <java-symbol type="id" name="keyguard_user_name" /> <java-symbol type="id" name="keyguard_transport_control" /> Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java +68 −126 Original line number Diff line number Diff line Loading @@ -19,49 +19,30 @@ import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.graphics.Rect; import android.os.RemoteException; import android.os.ServiceManager; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; import android.text.method.DigitsKeyListener; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import com.android.internal.telephony.ITelephony; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.PasswordEntryKeyboardHelper; import com.android.internal.widget.PasswordEntryKeyboardView; import com.android.internal.R; public class KeyguardSimPukView extends LinearLayout implements View.OnClickListener, KeyguardSecurityView, OnEditorActionListener, TextWatcher { import com.android.internal.R; private View mDeleteButton; /** * Displays a PIN pad for entering a PUK (Pin Unlock Kode) provided by a carrier. */ public class KeyguardSimPukView extends KeyguardAbsKeyInputView implements KeyguardSecurityView, OnEditorActionListener, TextWatcher { private ProgressDialog mSimUnlockProgressDialog = null; private KeyguardSecurityCallback mCallback; private SecurityMessageDisplay mSecurityMessageDisplay; private PasswordEntryKeyboardView mKeyboardView; private PasswordEntryKeyboardHelper mKeyboardHelper; private LockPatternUtils mLockPatternUtils; private volatile boolean mCheckInProgress; private TextView mSimPinEntry; private String mPukText; private String mPinText; private StateMachine mStateMachine = new StateMachine(); Loading Loading @@ -95,10 +76,11 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList com.android.internal.R.string.lockscreen_sim_unlock_progress_dialog_message; updateSim(); } else { state = ENTER_PIN; // try again? msg = R.string.kg_invalid_confirm_pin_hint; } } mSimPinEntry.setText(null); mPasswordEntry.setText(null); if (msg != 0) { mSecurityMessageDisplay.setMessage(msg, true); } Loading @@ -109,7 +91,7 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList mPukText=""; state = ENTER_PUK; mSecurityMessageDisplay.setMessage(R.string.kg_puk_enter_puk_hint, true); mSimPinEntry.requestFocus(); mPasswordEntry.requestFocus(); } } Loading @@ -119,62 +101,71 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList public KeyguardSimPukView(Context context, AttributeSet attrs) { super(context, attrs); mLockPatternUtils = new LockPatternUtils(getContext()); } public void setKeyguardCallback(KeyguardSecurityCallback callback) { mCallback = callback; mLockPatternUtils = new LockPatternUtils(getContext()); public void resetState() { mStateMachine.reset(); mPasswordEntry.setEnabled(true); } @Override protected int getPasswordTextViewId() { return R.id.pinEntry; } @Override protected void onFinishInflate() { super.onFinishInflate(); mSimPinEntry = (TextView) findViewById(R.id.sim_pin_entry); mSimPinEntry.setOnEditorActionListener(this); mSimPinEntry.addTextChangedListener(this); mDeleteButton = findViewById(R.id.delete_button); mDeleteButton.setOnClickListener(this); mKeyboardView = (PasswordEntryKeyboardView) findViewById(R.id.keyboard); mKeyboardHelper = new PasswordEntryKeyboardHelper(mContext, mKeyboardView, this, false, new int[] { R.xml.kg_password_kbd_numeric, com.android.internal.R.xml.password_kbd_qwerty, com.android.internal.R.xml.password_kbd_qwerty_shifted, com.android.internal.R.xml.password_kbd_symbols, com.android.internal.R.xml.password_kbd_symbols_shift }); mKeyboardHelper.setKeyboardMode(PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC); mKeyboardHelper.setEnableHaptics(mLockPatternUtils.isTactileFeedbackEnabled()); mSecurityMessageDisplay = new KeyguardMessageArea.Helper(this); mSecurityMessageDisplay.setTimeout(0); // don't show ownerinfo/charging status by default reset(); } final View ok = findViewById(R.id.key_enter); if (ok != null) { ok.setOnClickListener(new View.OnClickListener() { @Override protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) { return mSimPinEntry.requestFocus(direction, previouslyFocusedRect); public void onClick(View v) { doHapticKeyClick(); verifyPasswordAndUnlock(); } }); } public boolean needsInput() { return false; // This view provides its own keypad // The delete button is of the PIN keyboard itself in some (e.g. tablet) layouts, // not a separate view View pinDelete = findViewById(R.id.delete_button); if (pinDelete != null) { pinDelete.setVisibility(View.VISIBLE); pinDelete.setOnClickListener(new OnClickListener() { public void onClick(View v) { CharSequence str = mPasswordEntry.getText(); if (str.length() > 0) { mPasswordEntry.setText(str.subSequence(0, str.length()-1)); } doHapticKeyClick(); } }); pinDelete.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View v) { mPasswordEntry.setText(""); doHapticKeyClick(); return true; } }); } public void onPause() { mPasswordEntry.setKeyListener(DigitsKeyListener.getInstance()); mPasswordEntry.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); } mPasswordEntry.requestFocus(); public void onResume() { reset(); mSecurityMessageDisplay.setTimeout(0); // don't show ownerinfo/charging status by default } @Override public void showUsabilityHint() { } /** {@inheritDoc} */ public void cleanUp() { @Override public void onPause() { // dismiss the dialog. if (mSimUnlockProgressDialog != null) { mSimUnlockProgressDialog.dismiss(); Loading Loading @@ -218,23 +209,11 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList } } public void onClick(View v) { if (v == mDeleteButton) { mSimPinEntry.requestFocus(); final Editable digits = mSimPinEntry.getEditableText(); final int len = digits.length(); if (len > 0) { digits.delete(len-1, len); } } mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); } private Dialog getSimUnlockProgressDialog() { if (mSimUnlockProgressDialog == null) { mSimUnlockProgressDialog = new ProgressDialog(mContext); mSimUnlockProgressDialog.setMessage(mContext.getString( R.string.kg_sim_unlock_progress_dialog_message)); mSimUnlockProgressDialog.setMessage( mContext.getString(R.string.kg_sim_unlock_progress_dialog_message)); mSimUnlockProgressDialog.setIndeterminate(true); mSimUnlockProgressDialog.setCancelable(false); if (!(mContext instanceof Activity)) { Loading @@ -247,8 +226,8 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList private boolean checkPuk() { // make sure the puk is at least 8 digits long. if (mSimPinEntry.getText().length() >= 8) { mPukText = mSimPinEntry.getText().toString(); if (mPasswordEntry.getText().length() >= 8) { mPukText = mPasswordEntry.getText().toString(); return true; } return false; Loading @@ -256,16 +235,16 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList private boolean checkPin() { // make sure the PIN is between 4 and 8 digits int length = mSimPinEntry.getText().length(); int length = mPasswordEntry.getText().length(); if (length >= 4 && length <= 8) { mPinText = mSimPinEntry.getText().toString(); mPinText = mPasswordEntry.getText().toString(); return true; } return false; } public boolean confirmPin() { return mPinText.equals(mSimPinEntry.getText().toString()); return mPinText.equals(mPasswordEntry.getText().toString()); } private void updateSim() { Loading Loading @@ -295,46 +274,9 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList } @Override public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { // Check if this was the result of hitting the enter key mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); if (event.getAction() == MotionEvent.ACTION_DOWN) { if (actionId == EditorInfo.IME_NULL || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) { protected void verifyPasswordAndUnlock() { mStateMachine.next(); return true; } } return false; } @Override public void setLockPatternUtils(LockPatternUtils utils) { mLockPatternUtils = utils; } @Override public void reset() { mStateMachine.reset(); } @Override public KeyguardSecurityCallback getCallback() { return mCallback; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { if (mCallback != null) { mCallback.userActivity(KeyguardViewManager.DIGIT_PRESS_WAKE_MILLIS); } } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } }