Экран блокировки для приложения - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь защитить свое приложение, используя экран блокировки, используя клавишу ввода пользователя, впервые пользователь вводит 5-значный ключ в качестве пароля и снова вводит его и подтверждает пароль в разных представлениях, я не имею ни малейшего подтверждения пароль,

Как насчет общих предпочтений или намерений?

Это мой дизайн

enter image description here

Исходный код:

public class LockscreenActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText mPasswordField;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lockscreen);
        initViews();
        getInputText();

    }
    private void initViews() {
        mPasswordField = $(R.id.password_field);
        $(R.id.t9_key_0).setOnClickListener(this);
        $(R.id.t9_key_1).setOnClickListener(this);
        $(R.id.t9_key_2).setOnClickListener(this);
        $(R.id.t9_key_3).setOnClickListener(this);
        $(R.id.t9_key_4).setOnClickListener(this);
        $(R.id.t9_key_5).setOnClickListener(this);
        $(R.id.t9_key_6).setOnClickListener(this);
        $(R.id.t9_key_7).setOnClickListener(this);
        $(R.id.t9_key_8).setOnClickListener(this);
        $(R.id.t9_key_9).setOnClickListener(this);
        $(R.id.t9_key_clear).setOnClickListener(this);
        $(R.id.t9_key_backspace).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // handle number button click
        if (v.getTag() != null && "number_button".equals(v.getTag())) {
            mPasswordField.append(((TextView) v).getText());
            return;
        }
        switch (v.getId()) {
            case R.id.t9_key_clear: { // handle clear button
//                mPasswordField.setText(null);

                String a=getInputText();
                Toast.makeText(LockscreenActivity.this,a,Toast.LENGTH_LONG).show();
            }
            break;
            case R.id.t9_key_backspace: { // handle backspace button
                // delete one character
                Editable editable = mPasswordField.getText();
                int charCount = editable.length();
                if (charCount > 0) {
                    editable.delete(charCount - 1, charCount);
                }
            }
            break;
        }
    }

    public String getInputText() {
        return mPasswordField.getText().toString();

    }

    protected <T extends View> T $(@IdRes int id) {
        return (T) super.findViewById(id);
    }

}

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы можете создать локальную строковую переменную, которая будет добавляться к каждому входу в этой части вашего кода.

    String inputPin = "";
    if (v.getTag() != null && "number_button".equals(v.getTag())) {
        mPasswordField.append(((TextView) v).getText());
        inputPin = inputPin + ((TextView) v).getText();
        return;
    }

Затем, когда отображается ваш повторный просмотр выводов, вы можете сохранить этот вывод в другой переменной итогда сопоставьте это.Поскольку у вас есть два представления в одном и том же упражнении, вы сможете использовать некоторую переменную, определенную в этом упражнении.

0 голосов
/ 25 апреля 2018

Вы можете сохранить введенный пароль в общих настройках, а затем сравнить его со следующим введенным паролем.

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("first_entered", "password");
    editor.apply();
    //To retrieve values from shared preferences:
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String name = preferences.getString("first_entered", "");
    if (name.equals("next_input_entered")) {
        //password matched
    }
...