Android 应用程序的锁屏

Android 应用程序的锁屏,android,security,android-edittext,passwords,Android,Security,Android Edittext,Passwords,我正在尝试使用用户输入密钥的锁屏保护我的应用程序,第一次用户将输入一个5位数的密钥作为密码,然后再次输入相同的密钥并在不同的视图中确认密码,我不知道如何确认密码 共同的偏好或意图如何 这是我的设计 源代码: public class LockscreenActivity extends AppCompatActivity implements View.OnClickListener { private EditText mPasswordField; @Override

我正在尝试使用用户输入密钥的锁屏保护我的应用程序,第一次用户将输入一个5位数的密钥作为密码,然后再次输入相同的密钥并在不同的视图中确认密码,我不知道如何确认密码

共同的偏好或意图如何

这是我的设计

源代码:

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);
    }

}
公共类LockscreenActivity扩展AppCompatActivity实现View.OnClickListener{
私有编辑文本mPasswordField;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_锁屏);
initViews();
getInputText();
}
私有void initViews(){
mPasswordField=$(R.id.password\u字段);
$(R.id.t9_key_0);
$(R.id.t9_key_1);
$(R.id.t9_key_2);
$(R.id.t9_key_3);
$(R.id.t9_key_4);
$(R.id.t9_key_5);
$(R.id.t9_key_6);
$(R.id.t9_key_7);
$(R.id.t9_key_8);
$(R.id.t9_key_9).setOnClickListener(this);
$(R.id.t9_key_clear);
$(R.id.t9\u key\u backspace);
}
@凌驾
公共void onClick(视图v){
//手柄编号按钮点击
如果(v.getTag()!=null&“数字按钮”。等于(v.getTag()){
附加(((TextView)v.getText());
返回;
}
开关(v.getId()){
case R.id.t9_key_clear:{//手柄清除按钮
//mPasswordField.setText(空);
字符串a=getInputText();
Toast.makeText(LockscreenActivity.this,a,Toast.LENGTH_LONG.show();
}
打破
case R.id.t9_key_backspace:{//handle backspace按钮
//删除一个字符
可编辑=mPasswordField.getText();
int charCount=editable.length();
如果(字符数>0){
可编辑。删除(charCount-1,charCount);
}
}
打破
}
}
公共字符串getInputText(){
返回mPasswordField.getText().toString();
}
受保护的T$(@IdRes int id){
返回(T)super.findViewById(id);
}
}

您可以将输入的密码存储在共享首选项中,然后将其与下一个输入的密码进行比较

    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
    }

您可以创建一个局部字符串变量,该变量将附加到代码这一部分的每个输入上

    String inputPin = "";
    if (v.getTag() != null && "number_button".equals(v.getTag())) {
        mPasswordField.append(((TextView) v).getText());
        inputPin = inputPin + ((TextView) v).getText();
        return;
    }
然后,当显示重复pin视图时,可以将该pin存储在另一个变量中,然后匹配它。 由于同一活动中有两个视图,因此您可以使用活动中定义的某些变量。

请参阅:不要将密钥存储在共享首选项中。