Android登录记住密码以及自动登录的实现

记住密码以及自动登录的实现主要依赖于SharedPreferences类的使用,SharedPreferences是一个轻量级的存储类,用于存储一些小数据,比如登录账号密码以及状态信息等。

本文章只针对本人毕设的登录页面中的记住密码以及自动登录做出一些简单的解释。如果需要了解登录页面实现的完整代码请点击下面链接

Android登录页面实现

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

//复选框
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()会将内存中的数据存储到硬盘上

  • 5
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是实现 Android 记住密码自动登录的简单代码示例: 1. 记住密码: 在登录页面的登录按钮点击事件中,添加如下代码: ```java // 获取账号和密码的EditText EditText etAccount = findViewById(R.id.et_account); EditText etPassword = findViewById(R.id.et_password); // 获取记住密码的CheckBox CheckBox cbRememberPwd = findViewById(R.id.cb_remember_pwd); if (cbRememberPwd.isChecked()) { // 如果勾选了记住密码,则将账号和密码保存到SharedPreferences中 SharedPreferences sp = getSharedPreferences("login_info", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString("account", etAccount.getText().toString()); editor.putString("password", etPassword.getText().toString()); editor.putBoolean("remember_pwd", true); editor.apply(); } else { // 如果没有勾选记住密码,则清空SharedPreferences中的账号和密码 SharedPreferences sp = getSharedPreferences("login_info", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.remove("account"); editor.remove("password"); editor.putBoolean("remember_pwd", false); editor.apply(); } ``` 2. 自动登录: 在应用启动的时候,在 onCreate() 方法中添加如下代码: ```java // 获取保存的账号和密码 SharedPreferences sp = getSharedPreferences("login_info", MODE_PRIVATE); String account = sp.getString("account", ""); String password = sp.getString("password", ""); boolean rememberPwd = sp.getBoolean("remember_pwd", false); if (rememberPwd) { // 如果勾选了记住密码,则填充账号和密码,并且自动登录 EditText etAccount = findViewById(R.id.et_account); EditText etPassword = findViewById(R.id.et_password); etAccount.setText(account); etPassword.setText(password); // 在这里添加登录操作,即可实现自动登录 } ``` 注意:在自动登录的时候,需要先检查账号和密码是否为空,如果为空,则不能自动登录。同时,为了保障账号和密码的安全,需要对密码进行加密存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值