第二阶段冲刺(三)

昨天学习了sharedpreference的相关用法

遇到的困难是:在sharepreference中存储数据不熟练

今天准备继续学习如何实现自动登录功能

package com.example.a002034.autologindemo;
 
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
 
/**
 * @author 002034
 */
public class LoginActivity extends AppCompatActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
    private static final String TAG = "LoginActivity";
    private EditText mUserName, mPassword;
    private CheckBox mCbPwd, mCbAutoLogin;
    private Button mBtnLogin;
    private ImageButton mBtnQuit;
    private String mUserNameValue, mPasswordValue;
    private SharedPreferences sp;
 
    @SuppressLint("WorldReadableFiles")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        //去除标题
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_login);
 
        //获得实例对象
        sp = this.getSharedPreferences("userInfo", Context.MODE_WORLD_READABLE);
        mUserName = findViewById(R.id.et_zh);
        mPassword = findViewById(R.id.et_mima);
 
        mCbPwd = findViewById(R.id.cb_mima);
        mCbAutoLogin = findViewById(R.id.cb_auto);
 
        mCbPwd.setOnCheckedChangeListener(this);
        mCbAutoLogin.setOnCheckedChangeListener(this);
 
        mBtnLogin = findViewById(R.id.btn_login);
        mBtnQuit = findViewById(R.id.img_btn);
 
        mBtnLogin.setOnClickListener(this);
        mBtnQuit.setOnClickListener(this);
 
        //检查初始状态
        checkInitStatus(sp);
    }
 
    /**
     * 检查记住密码.
     */
    private void checkRemPwd() {
        if (mCbPwd.isChecked()) {
            Log.i(TAG, "checkRemPwd:记住密码已选中 ");
            sp.edit().putBoolean("ISCHECK", true).apply();
        } else {
            Log.i(TAG, "checkRemPwd: 记住密码没有选中");
            sp.edit().putBoolean("ISCHECK", false).apply();
        }
    }
 
    /**
     * 初始检查记住密码状态以及是否设置自动登录.
     */
    private void checkInitStatus(SharedPreferences sp) {
        if (sp.getBoolean("ISCHECK", false)) {
            //设置默认是记录密码状态
            mCbPwd.setChecked(true);
            mUserName.setText(sp.getString("USER_NAME", ""));
            mPassword.setText(sp.getString("PASSWORD", ""));
            //判断自动登陆多选框状态
            if (sp.getBoolean("AUTO_ISCHECK", false)) {
                //设置默认是自动登录状态
                mCbAutoLogin.setChecked(true);
                //跳转界面
                Intent intent = new Intent(LoginActivity.this, LogoActivity.class);
                LoginActivity.this.startActivity(intent);
            }
        }
    }
 
    /**
     * 登录.
     */
    private void login() {
        mUserNameValue = mUserName.getText().toString();
        mPasswordValue = mPassword.getText().toString();
 
        if ("xzy".equals(mUserNameValue) && "123".equals(mPasswordValue)) {
            Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
            //登录成功和记住密码框为选中状态才保存用户信息
            if (mCbPwd.isChecked()) {
                //记住用户名、密码、
                SharedPreferences.Editor editor = sp.edit();
                editor.putString("USER_NAME", mUserNameValue);
                editor.putString("PASSWORD", mPasswordValue);
                editor.apply();
            }
            //跳转界面
            Intent intent = new Intent(LoginActivity.this, LogoActivity.class);
            LoginActivity.this.startActivity(intent);
        } else {
 
            Toast.makeText(LoginActivity.this, "用户名或密码错误,请重新登录", Toast.LENGTH_LONG).show();
        }
    }
 
    /**
     * 检查自动登录.
     */
    private void checkAutoLogin() {
        if (mCbAutoLogin.isChecked()) {
            System.out.println("自动登录已选中");
            sp.edit().putBoolean("AUTO_ISCHECK", true).apply();
 
        } else {
            System.out.println("自动登录没有选中");
            sp.edit().putBoolean("AUTO_ISCHECK", false).apply();
        }
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.img_btn:
                finish();
                break;
            // 登录监听事件  现在默认为用户名为:xzy 密码:123
            case R.id.btn_login:
                login();
                break;
            default:
                break;
        }
    }
 
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        switch (buttonView.getId()) {
            //监听自动登录多选框事件
            case R.id.cb_auto:
                checkAutoLogin();
                break;
            //监听记住密码
            case R.id.cb_mima:
                checkRemPwd();
                break;
            default:
                break;
        }
    }
}

 

posted on 2019-05-23 07:31  不愧下学  阅读(150)  评论(0编辑  收藏  举报

导航