안드로이드 앱을 사용하면, 많은 앱이 아이디/패스워드를 입력받아서 로그인을 지원한다. 개인적으로는 패스워드의 입력(예로, ****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의 패스워드가 * 문자로만 보이는 것을 확인할 수 있다.