每日总结2023-05-17

今天对于记住密码和自动登录仍有不理解的地方,用别人的流程过了一遍仍是未记住密码。

别人的一般流程:

记住密码和自动登录使用复选框来实现,并设置了全局变量接收当前记住密码以及自动登录的状态。

//复选框
private CheckBox mRemenber;//记住密码
private boolean mPasswordFlag = false;//记住密码标志
private CheckBox mAutoLogin;//自动登录
private boolean mAutoLoginFlag = false;//自动登录标志

 

使用SharedPreferences时在页面初始化的时候实例,也就是在onCreate()中实现,在实例该类时会在本地创建一个文件,需要给该文件命名。下面是初始化页面时从已存在的文件中读取信息。

SharedPreferences sharedPreferences = getSharedPreferences("busApp", MODE_PRIVATE);
 
        //如果不为空
        if (sharedPreferences != null) {
            String userName = sharedPreferences.getString("username", "");
            userPassword = sharedPreferences.getString("password", "");
            mPasswordFlag = sharedPreferences.getBoolean("remenber", false);
            mAutoLoginFlag = sharedPreferences.getBoolean("auto", false);
            mPhoneText.setText(userName);
        }
 
        //确定为true获取 记住密码,打钩
        if (mPasswordFlag) {
            mRemenber.setChecked(true);
            mPasswordText.setText(userPassword);
        }
        //选择了自动登录后直接登录
        if (mAutoLoginFlag){
            mAutoLogin.setChecked(true);
            String username = mPhoneText.getText().toString();
            String password = mPasswordText.getText().toString();
            login(username,password);
 
        }
        //注册监听
        mRemenber.setOnClickListener(mListener);
        mRemenber.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //记住密码
                //如果是选中记住密码,取消记住密码、自动登录
                if (!isChecked){
                    mAutoLogin.setChecked(false);
                    //清空密码输入框
                    mPasswordText.setText("");
 
                }
            }
        });

 

 

在登录时将登录页面的所有信息存放到存储文件中。

//1 创建 SharePreferences 对象
 
                    String username = mPhoneText.getText().toString();
                    String password = mPasswordText.getText().toString();
                    Log.d("输入框获取的密码", "onClick: " + password);
                    //没有记住密码时 MD5密码加密
 
                    SharedPreferences sharedPreferences = getSharedPreferences("busApp", MODE_PRIVATE);
                    SharedPreferences.Editor editor = sharedPreferences.edit();
                    //2  创建Editor对象,写入值
                    editor.putString("username", username);
                    if (mRemenber.isChecked()) {
                        if(!mPasswordFlag){
 
                            try {
                                password = MD5Utils.getMD5(password);
                                Log.d("记住密码选中且false加密后密码", "onClick: " + password);
                            } catch (NoSuchAlgorithmException e) {
                                e.printStackTrace();
                            }
                            mPasswordFlag = true;
 
                        }
                        editor.putBoolean("remenber", mPasswordFlag);
                        editor.putString("password", password);
                        Log.d("记住密码选中写入的密码", "onClick: " + password);
                        //选中自动登录
                        if (mAutoLogin.isChecked()){
                            mAutoLoginFlag = true;
                        }else{
                            mAutoLoginFlag = false;
                        }
                        editor.putBoolean("auto", mAutoLoginFlag);
                    } else {
                        if(!mPasswordFlag){
 
                            try {
                                password = MD5Utils.getMD5(password);
                                Log.d("记住密码未选中且false加密后密码", "onClick: " + password);
                            } catch (NoSuchAlgorithmException e) {
                                e.printStackTrace();
                            }
                        }
                        //取消自动登录和记住密码,清空密码
                        mPasswordFlag = false;
                        mAutoLoginFlag = false;
                        editor.putString("password", "");
                        editor.putBoolean("remenber", mPasswordFlag);
                        editor.putBoolean("auto", mAutoLoginFlag);
                    }
                    //3  提交
                    editor.commit();

 

在执行登录之前一定要提交,commit()会将内存中的数据存储到硬盘上。

 

posted @ 2023-05-17 19:44  花伤错零  阅读(29)  评论(0)    收藏  举报