안드로이드 EditText의 패스워드 문자를 숨겨보자

안드로이드 앱을 사용하면, 많은 앱이 아이디/패스워드를 입력받아서 로그인을 지원한다. 개인적으로는 패스워드의 입력(예로, ****1)이 보안에 조금이나마 취약할 것으로 생각하지는 않았지만, 누군가 옆에서 기억하고 있다면 아이디는 화면에 보이니 보안에 취약할 수도 있겠다. 이것에 대한 내용은 안드로이드 펍에서 누군가 Q&A 한 것이 있어서 답변하면서 확인한 내용이다.

그래서 EditText에 패스워드를 변경하는 기능을 제공하는 클래스를 상속(재정의)해서 원하는 문자로 입력하면 된다.

  • CustomPasswordTransformationMethod 클래스
static class CustomPasswordTransformationMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
    }

    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;
        public PasswordCharSequence(CharSequence source) {
            mSource = source; // Store char sequence
        }
        public char charAt(int index) {
            return '*'; // This is the important part
        }
        public int length() {
            return mSource.length(); // Return default
        }
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }
    }
}
  • 사용예제
passwordTxt.setTransformationMethod(new CustomPasswordTransformationMethod());

이제 EditText의 패스워드가 * 문자로만 보이는 것을 확인할 수 있다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.