简体   繁体   中英

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" />

Something like:

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

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM