Android登录实现记住密码(继上一篇博客)

一、前言:

     在上一篇博客中完成了一个简单的登录界面和强制下线等一系列简单功能。现在,在上一篇的基础上实现记住密码的功能,

只是实现这么一个简单的功能,在实际项目中,这种方式是很不安全的。

查看上一篇博客

二,分析与实现过程:

首先我们需要在登录界面放置一个复选框控件,像这样:


代码如下:

      .......
<CheckBox
        android:id="@+id/mCb"
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="记住密码"
        />
    ......

     注:1.这里代码显示好像有问题,第一行是: <CheckBox 

       当用户选中这个复选框后,我们需要把账号密码,还有是否记住密码着三个数据保存到本地,启动程序的时候,程序需要去读取这个本地数据文件,首先判断用户是否选中了记住密码,如果是true就自动账号和密码到输入框。当然第一次启动程序本地肯定是没有这些数据的。代码如下:

public class LoginActivity extends BaseActivity {
    private EditText mEt_phone;
    private EditText mEt_password;
    private Button mBt_login;
    private CheckBox mCb;
    private String phone;
    private String password;
    //定义读取和存储数据对象
    private SharedPreferences.Editor editor;
    private SharedPreferences pref;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_login );
        //getDefaultSharedPreferences方法通过获得pref对象
        pref = PreferenceManager.getDefaultSharedPreferences ( this );
        mBt_login = findViewById ( R.id.mBt_login );
        mEt_phone = findViewById ( R.id.mEt_phone );
        mEt_password = findViewById ( R.id.mEt_password );
        mCb = findViewById(R.id.mCb);
        //首先读取本地数据中用户是否选择了记住密码
        boolean isRemember = pref.getBoolean ( "remember",false );
        //如果是,就将本地数据中的账号和密码Set到输入框中
        //并将记住密码复选框Set为true
        if (isRemember){
            String phone_save = pref.getString ( "phone","" );
            String password_save = pref.getString ( "password","" );
            mEt_phone.setText ( phone_save );
            mEt_password.setText ( password_save );
            mCb.setChecked ( true );
        }

        mBt_login.setOnClickListener ( new View.OnClickListener () {
            @Override
            public void onClick(View view) {
                phone = mEt_phone.getText ().toString ();
                password = mEt_password.getText ().toString ();
                if(phone.equals ( "admin" )&&password.equals ( "123456" )){
                    //获得editor对象,用于将数据保存在本地
                    editor =pref.edit ();
                    //如果用户选中了记住密码复选框.....
                    if (mCb.isChecked ()){
                        editor.putBoolean ( "remember",true );
                        editor.putString ( "phone", mEt_phone.getText ().toString ());
                        editor.putString ( "password",mEt_password.getText ().toString () );
                    }else {
                        //如果没选,就将本地数据中的remember设置为false
                        editor.putBoolean ( "remember",false);
                        //或者使用下面语句直接清空本地数据
                        //editor.clear ();
                    }
                    editor.apply ();
                    Intent intent = new Intent ( LoginActivity.this,MainActivity.class );
                    startActivity ( intent );
                    finish ();
                }else {
                    Toast.makeText ( LoginActivity.this,
                            "账户或者密码错误",Toast.LENGTH_SHORT).show ();
                }
            }
        } );
    }
}
        代码是上一篇博客的LoginActivity,只是在它的基础上添加了一些代码,添加代码的地方我都加注释说明,代码不是很复杂。上次的上传了源文件,这次就不用了,因为相对于上篇博客中的代码改动的地方我都直接贴出来了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值