public void onClick(View v) { if (v == mOldPin) { mNewPin1.requestFocus(); } else if (v == mNewPin1) { mNewPin2.requestFocus(); } else if (v == mNewPin2) { mButton.requestFocus(); } else if (v == mButton) { IccCard iccCardInterface = mPhone.getIccCard(); if (iccCardInterface != null) { String oldPin = mOldPin.getText().toString(); String newPin1 = mNewPin1.getText().toString(); String newPin2 = mNewPin2.getText().toString(); int error = validateNewPin(newPin1, newPin2); switch (error) { case PIN_INVALID_LENGTH: case PIN_MISMATCH: mNewPin1.getText().clear(); mNewPin2.getText().clear(); mMismatchError.setVisibility(View.VISIBLE); Resources r = getResources(); CharSequence text; if (error == PIN_MISMATCH) { text = r.getString(R.string.mismatchPin); } else { text = r.getString(R.string.invalidPin); } mMismatchError.setText(text); break; default: Message callBack = Message.obtain(mHandler, EVENT_PIN_CHANGED); if (DBG) log("change pin attempt: old=" + oldPin + ", newPin=" + newPin1); reset(); if (mChangePin2) { iccCardInterface.changeIccFdnPassword(oldPin, newPin1, callBack); } else { iccCardInterface.changeIccLockPassword(oldPin, newPin1, callBack); } // TODO: show progress panel } } } else if (v == mPUKCode) { mPUKSubmit.requestFocus(); } else if (v == mPUKSubmit) { mPhone .getIccCard() .supplyPuk2( mPUKCode.getText().toString(), mNewPin1.getText().toString(), Message.obtain(mHandler, EVENT_PIN_CHANGED)); } }