Mridang Agarwalla
Mridang Agarwalla

Reputation: 45018

How can I mask the summary of an EditTextPreference when it is a masked password field?

I'm using an onPreferenceChangeListener attached to my EditTextPreference that shows the value of the preference in the summary. Here's what it looks like:

public boolean onPreferenceChange(Preference prePreference, Object objValue) {
    if (prePreference instanceof EditTextPreference) {
        //TODO: Check if password type and show chacraters
        prePreference.setSummary(objValue.toString());
    }
    return true;
}

If the field is a masked password field, I'd like to show the default password mask characters in the the summary. Here's an example of a masked field:

    <EditTextPreference
        android:inputType="textPassword"
        android:key="password"
        android:title="@string/password" />

Upvotes: 4

Views: 4041

Answers (3)

lionello
lionello

Reputation: 511

Easier yet, don't call the generated bindPreferenceSummaryToValue (which in turn calls setSummary) for the password preference.

Note that you shouldn't be storing passwords in the preferences, but instead prompt from a password when you need it, obtain a token from the service, and store the token instead.

Upvotes: 1

FunkTheMonk
FunkTheMonk

Reputation: 10938

Something like:

EditText edit = ((EditTextPreference) prePreference).getEditText();
String pref = edit.getTransformationMethod().getTransformation(objValue.toString(), edit).toString();
prePreference.setSummary(pref);

Upvotes: 9

Remi
Remi

Reputation: 1299

Why don't you check the text size and put the characters in the textview for each integer in text size? Or did I misunderstand you?

Or take a look at this link:

Hide password/viewpassword

Upvotes: 0

Related Questions