且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android手机上设置非英语语言的密码?

更新时间:2023-12-04 22:46:22

所以战斗几天后,我通过实现我的方法,它得到了一个解决办法。

So after fighting few days i got a workaround by implementing my method for it.

private String validateHebrewPassword(String password)
        {
                if (password.length() < mPasswordMinLength) {
                        return getString(mIsAlphaMode ?
                                        R.string.lockpassword_password_too_short
                                        : R.string.lockpassword_pin_too_short, mPasswordMinLength);
                }
                if (password.length() > mPasswordMaxLength) {
                        return getString(mIsAlphaMode ?
                                        R.string.lockpassword_password_too_long
                                        : R.string.lockpassword_pin_too_long, mPasswordMaxLength + 1);
                }

            for (int i = 0; i < password.length(); i++)
            {
                char c = password.charAt(i);
                        System.out.println("Validate Hebrew Password Success "+ " Char "+c+" for password "+password+ " langauage "+locale);

            }
            return null;
        }

和modiying其validatePasswor()来电具体有点像希伯来文:

And modiying its validatePasswor() caller a bit specific to hebrew like:

    private void handleNext() {
                final String pin = mPasswordEntry.getText().toString();
                if (TextUtils.isEmpty(pin)) {
                    return;
                }
                String errorMsg = null;
                if (mUiStage == Stage.Introduction) 
                {
                    String locale = java.util.Locale.getDefault().getLanguage();
                    if(locale.equals("iw")) //Specific Hebrew check
                    { 
                        errorMsg = validateHebrewPassword(pin); //New Method
                    }
                    else
                    {
                        errorMsg = validatePassword(pin); //AOSP Method
                    }
                    if (errorMsg == null) 
                    {
                        mFirstPin = pin;
                        mPasswordEntry.setText("");
                        updateStage(Stage.NeedToConfirm);
                    }
                } else if (mUiStage == Stage.NeedToConfirm) {
                    if (mFirstPin.equals(pin)) {
                        final boolean isFallback = getActivity().getIntent().getBooleanExtra(
                                LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
                        mLockPatternUtils.clearLock(isFallback);
                        mLockPatternUtils.saveLockPassword(pin, mRequestedQuality, isFallback);
                        getActivity().setResult(RESULT_FINISHED);
                        getActivity().finish();
                    } else {
                        CharSequence tmp = mPasswordEntry.getText();
                        if (tmp != null) {
                            Selection.setSelection((Spannable) tmp, 0, tmp.length());
                        }
                        updateStage(Stage.ConfirmWrong);
                    }
                }
                if (errorMsg != null) {
                    showError(errorMsg, mUiStage);
                }
            }

private void updateUi() {
            String password = mPasswordEntry.getText().toString();
            final int length = password.length();
            if (mUiStage == Stage.Introduction && length > 0) {
                if (length < mPasswordMinLength) {
                    String msg = getString(mIsAlphaMode ? R.string.lockpassword_password_too_short
                            : R.string.lockpassword_pin_too_short, mPasswordMinLength);
                    mHeaderText.setText(msg);
                    mNextButton.setEnabled(false);
                } else 
                {
                    String locale = java.util.Locale.getDefault().getLanguage();
                    String error = null;
                    if(locale.equals("iw")) //Specific Hebrew check
                    { 
                        error = validateHebrewPassword(password); //New method
                    }
                    else
                    {
                        error = validatePassword(password); //AOSP Method
                    }
                    if (error != null) {
                        mHeaderText.setText(error);
                        mNextButton.setEnabled(false);
                    } else {
                        mHeaderText.setText(R.string.lockpassword_press_continue);
                        mNextButton.setEnabled(true);
                    }
                }
            } else {
                mHeaderText.setText(mIsAlphaMode ? mUiStage.alphaHint : mUiStage.numericHint);
                mNextButton.setEnabled(length > 0);
            }
            mNextButton.setText(mUiStage.buttonText);
        }