在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点

下面,小编将带领大家通过SharedPreferences实现记住密码的操作

一、首先:介绍下什么是SharedPreferences?

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。

二、介绍了SharedPreferences,我们将通过记住SharedPreferences的案例讲述SharedPreferences

分析:当用户第一次登陆的时候,如果点击记住密码的操作,则将账户密码保存到xml中,如果没有点击,则不保存,或者保存空值到xml中(为了安全起见,建议进行数据存储的加密算法,常用的有MD5加密,Base64加密,小编在这不予讲述 --#)

案例:

这个案例实现的操作如上图

代码:如下图

package bzu.edu.cn.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
/**
 * 这是一个用于记住密码的demo
 * 知识点:SharedPreferences 存储的数据存储到xml文件中,读取的时候通过检测checkbox是否被选中,从而判断
 * 是否需要从xml中进行密码的读取操作
 */
public class MainActivity extends Activity {
    private EditText edt_user,edt_pass;
    private CheckBox ck_save;
    private Button btn_login;
    private static final String PREFS_NAME="NamePWD";
    private SharedPreferences sharedPreferences=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView(); // 初始化控件
        setListener(); //设置监听事件
        getData(); //第二次进入的时候得到数据
    }
    @Override
    protected void onResume() {
        super.onResume();
        getData();
    }
    private void getData() {
        sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
        //判断之前是否存储过密码
        if(sharedPreferences.getBoolean("isKeep",true)){
            edt_user.setText(sharedPreferences.getString("user",""));
            edt_pass.setText(sharedPreferences.getString("pass",""));
        }else {
            edt_user.setText("");
            edt_pass.setText("");
        }
    }
    private void setListener() {
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if("monster".equals(edt_user.getText().toString())&&"123".equals(edt_pass.getText().toString())){
                    if(ck_save.isChecked()){
                        //如果checkbook被选中
                        sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
                        SharedPreferences.Editor edit=sharedPreferences.edit();
                        edit.putBoolean("isKeep",true);
                        edit.putString("user",edt_user.getText().toString());
                        edit.putString("pass",edt_pass.getText().toString());
                        edit.commit();
                    }else {
                        sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
                        SharedPreferences.Editor edit=sharedPreferences.edit();
                        edit.putBoolean("isKeep",false);
                        edit.putString("user","");
                        edit.putString("pass","");
                        edit.commit();
                    }
                    //跳转
                    Intent intent=new Intent(MainActivity.this,SecondActivity.class);
                    startActivity(intent);
                }else {
                    Toast.makeText(MainActivity.this,"账号或密码错误",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    private void initView() {
        edt_user= (EditText) findViewById(R.id.edt_user);
        edt_pass= (EditText) findViewById(R.id.edt_Pass);
        ck_save= (CheckBox) findViewById(R.id.ck_save);
        btn_login= (Button) findViewById(R.id.btn_login);
    }
}

分析:首先声明SharedPreferences对象,然后调用edit()方法,每次使用完成后一定要commit()

----

源码托管:https://coding.net/u/monsterLin/p/SharedPreferences_Demo/git

Android数据存储-通过SharedPreferences实现记住密码的操作的更多相关文章

  1. Android数据存储方式--SharedPreferences

    Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...

  2. Android 数据存储之 SharedPreferences储存

    ------------------------------------------SharedPreferences存储--------------------------------------- ...

  3. Android数据存储三剑客——SharedPreferences、File、SQLite

    Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...

  4. Android数据存储之SharedPreferences存储

    安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串.整形.布 ...

  5. android数据存储之SharedPreferences

    一.SharedPreferences简介      (1)SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activ ...

  6. Android数据存储之SharedPreferences及如何安全存储

    前言: 最近一直在学习ios的数据存储,当学习到NSUserDefaults的时候让我回想起了SharedPreferences,今天闲来无事,想着总结一下SharedPreferences的使用. ...

  7. Android数据存储之sharedpreferences与Content Provider

    android中对数据操作包含有: file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序 ...

  8. Android简易数据存储之SharedPreferences

    Andorid提供了多种数据存储的方式,例如前面说到的“Android数据存储之SQLite的操作”是用于较复杂的数据存储.然而,如果有些简单的数据存储如果采用SQLite的方式的话会显得比较笨重.例 ...

  9. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

随机推荐

  1. solr4.3 java.lang.NumberFormatException

    solr java.lang.NumberFormatException 现象:定时每天全量,每隔5分钟增量DIH从mysql导入数据 solr4j返回加过Id列表,一天偶然出现 java.lang. ...

  2. C语言递归,非递归实现翻转链表

    翻转链表作为,链表的常用操作,也是面试常遇到的. 分析非递归分析: 非递归用的小技巧比较多,很容易出错. 递归分析比较简单,在代码里面 代码: #include<stdio.h> #inc ...

  3. 后台系统组件:一丶bootstrap table

    http://www.cnblogs.com/landeanfen/p/4976838.html (bootstrap table) http://www.cnblogs.com/landeanfen ...

  4. eclipse执行上一次结果

    eclipse执行上一次结果,解决方法:Project-clean

  5. 从idea上通过路径去导入项目

    这里我用git来演示导入. 首先确定你要导入项目的路径.(我这里用码云路径图片做演示) 1.选择 2.填写

  6. Titanium系列--安装Titanium Studio 中的Android SDK,JDK以及环境变量的配置(二)

    Ubuntu安装配置JDK 1.先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-8u25-linux-x64.tar.gz文件,下好后直接解压 Step1:# 将解压好的jdk1. ...

  7. 161101、在Java中如何高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

  8. HDU 1698

    成段更新 这是一种把 num[]上空结点当做lazy标志使用的方法 都一样... #include <stdio.h> #include <string.h> #include ...

  9. 超实用的JavaScript代码段 Item4 --发送短信验证码

    发送短信验证码 实现点击“发送验证码”按钮后,按钮依次显示为“59秒后重试”.“58秒后重试”…直至倒计时至0秒时再恢复显示为“发送验证码”.在倒计时期间按钮为禁用状态 . 第一步.获取按钮.绑定事件 ...

  10. jQuery实现一个全选复选框联动效果

    类似邮件列表里的复选框 要求双向联动 ☛ [实现]: <body> <div> <input type="checkbox" name="c ...