2014-11-28 2 views
0

android stack에 관한 질문이 this인데, 나는 안드로이드 폰이 비 영어권 암호 설정을 지원할 수있는 솔루션이 있습니다.설정 Android 휴대 전화의 영어가 아닌 비밀번호?

내 휴대 전화 SRC는 주식 - 안드로이드 기반으로되어 있으며, 히브리어와 같은 ASCII가 아닌 표준 암호를 설정할 수 없습니다.

, 잠금 화면 ChooseLockPassword.java, validatePassword() (라인 292) 내부에, 여기 (라인 311에서)은 "잘못된 문자"메시지를 표시하는 코드 조각입니다 비밀번호 입력을 처리 AOSP의 소스 코드를 기반으로 :

// allow non control Latin-1 characters only 
if (c < 32 || c > 127) { 
    return getString(R.string.lockpassword_illegal_character); 
} 

나는이 부분을 주석 처리했지만 생각하지 않는다. [대기중인 채로 대기] 이 조건에 대한 질문이 없습니다.이 작업을 수행 할 가능성을 크랙킹하는 데 도움이 필요합니다. "해결 방법"도 수행됩니다.

답변

0

그래서 며칠을 싸운 후에 나는 그것을위한 방법을 구현함으로써 해결 방법을 얻었습니다.

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; 
     } 

그리고 그 validatePasswor()는 특정 조금 히브리어 발신자 modiying 같은 :

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); 
     } 
관련 문제