Android SharedPreferences实现记住密码和自动登录界面

SharedPreferences介绍:

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下。

SharedPreferences的用法:

由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力。但它是通过其Editor接口中的一些方法来操作SharedPreference的,用法见下面代码:

Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

结果截图:



工程目录:

Java代码

LoginActivity.java

package com.liu.activity; 

import android.app.Activity;
import android.app.backup.SharedPreferencesBackupHelper;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.Spannable;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast; 

public class LoginActivity extends Activity { 

 private EditText userName, password;
 private CheckBox rem_pw, auto_login;
 private Button btn_login;
 private ImageButton btnQuit;
 private String userNameValue,passwordValue;
 private SharedPreferences sp; 

 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState); 

 //去除标题
 this.requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.login); 

 //获得实例对象
 sp = this.getSharedPreferences("userInfo", Context.MODE_WORLD_READABLE);
 userName = (EditText) findViewById(R.id.et_zh);
 password = (EditText) findViewById(R.id.et_mima);
 rem_pw = (CheckBox) findViewById(R.id.cb_mima);
 auto_login = (CheckBox) findViewById(R.id.cb_auto);
 btn_login = (Button) findViewById(R.id.btn_login);
 btnQuit = (ImageButton)findViewById(R.id.img_btn); 

 //判断记住密码多选框的状态
 if(sp.getBoolean("ISCHECK", false))
 {
  //设置默认是记录密码状态
  rem_pw.setChecked(true);
  userName.setText(sp.getString("USER_NAME", ""));
  password.setText(sp.getString("PASSWORD", ""));
  //判断自动登陆多选框状态
  if(sp.getBoolean("AUTO_ISCHECK", false))
  {
   //设置默认是自动登录状态
   auto_login.setChecked(true);
  //跳转界面
  Intent intent = new Intent(LoginActivity.this,LogoActivity.class);
  LoginActivity.this.startActivity(intent); 

  }
 } 

 // 登录监听事件 现在默认为用户名为:liu 密码:123
 btn_login.setOnClickListener(new OnClickListener() { 

  public void onClick(View v) {
  userNameValue = userName.getText().toString();
  passwordValue = password.getText().toString(); 

  if(userNameValue.equals("liu")&&passwordValue.equals("123"))
  {
   Toast.makeText(LoginActivity.this,"登录成功", Toast.LENGTH_SHORT).show();
   //登录成功和记住密码框为选中状态才保存用户信息
   if(rem_pw.isChecked())
   {
   //记住用户名、密码、
   Editor editor = sp.edit();
   editor.putString("USER_NAME", userNameValue);
   editor.putString("PASSWORD",passwordValue);
   editor.commit();
   }
   //跳转界面
   Intent intent = new Intent(LoginActivity.this,LogoActivity.class);
   LoginActivity.this.startActivity(intent);
   //finish(); 

  }else{ 

   Toast.makeText(LoginActivity.this,"用户名或密码错误,请重新登录", Toast.LENGTH_LONG).show();
  } 

  }
 }); 

 //监听记住密码多选框按钮事件
 rem_pw.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  if (rem_pw.isChecked()) { 

   System.out.println("记住密码已选中");
   sp.edit().putBoolean("ISCHECK", true).commit(); 

  }else { 

   System.out.println("记住密码没有选中");
   sp.edit().putBoolean("ISCHECK", false).commit(); 

  } 

  }
 }); 

 //监听自动登录多选框事件
 auto_login.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  if (auto_login.isChecked()) {
   System.out.println("自动登录已选中");
   sp.edit().putBoolean("AUTO_ISCHECK", true).commit(); 

  } else {
   System.out.println("自动登录没有选中");
   sp.edit().putBoolean("AUTO_ISCHECK", false).commit();
  }
  }
 }); 

 btnQuit.setOnClickListener(new OnClickListener() { 

  @Override
  public void onClick(View v) {
  finish();
  }
 }); 

 }
}

LogoActivity.java

package com.liu.activity;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.opengl.ETC1;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar; 

public class LogoActivity extends Activity {
 private ProgressBar progressBar;
 private Button backButton; 

 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 // 去除标题
 this.requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.logo); 

 progressBar = (ProgressBar) findViewById(R.id.pgBar);
 backButton = (Button) findViewById(R.id.btn_back); 

 Intent intent = new Intent(this, WelcomeAvtivity.class);
 LogoActivity.this.startActivity(intent); 

 backButton.setOnClickListener(new OnClickListener() { 

  @Override
  public void onClick(View v) {
  finish(); 

  }
 }); 

 } 

}

WelcomeActivity.java

package com.liu.activity;
import android.app.Activity;
import android.os.Bundle; 

public class WelcomeAvtivity extends Activity { 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 // TODO Auto-generated method stub
 super.onCreate(savedInstanceState);
 setContentView(R.layout.welcome);
 } 

}

布局文件:

login.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/logo_bg"
 android:orientation="vertical" > 

 <RelativeLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" >
 <ImageButton
  android:id="@+id/img_btn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentRight="true"
  android:background="@drawable/quit"/> 

 <TextView
  android:id="@+id/tv_zh"
  android:layout_width="wrap_content"
  android:layout_height="35dip"
  android:layout_marginLeft="12dip"
  android:layout_marginTop="10dip"
  android:gravity="bottom"
  android:text="帐号:"
  android:textColor="#000000"
  android:textSize="18sp" /> 

 <EditText
  android:id="@+id/et_zh"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_below="@id/tv_zh"
  android:layout_marginLeft="12dip"
  android:layout_marginRight="10dip" /> 

 <TextView
  android:id="@+id/tv_mima"
  android:layout_width="wrap_content"
  android:layout_height="35dip"
  android:layout_below="@id/et_zh"
  android:layout_marginLeft="12dip"
  android:layout_marginTop="10dip"
  android:gravity="bottom"
  android:text="密码:"
  android:textColor="#000000"
  android:textSize="18sp" /> 

 <EditText
  android:id="@+id/et_mima"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_below="@id/tv_mima"
  android:layout_marginLeft="12dip"
  android:layout_marginRight="10dip"
  android:maxLines="200"
  android:password="true"
  android:scrollHorizontally="true" /> 

 <CheckBox
  android:id="@+id/cb_mima"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@id/et_mima"
  android:layout_marginLeft="12dip"
  android:text="记住密码"
  android:textColor="#000000" /> 

 <CheckBox
  android:id="@+id/cb_auto"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@id/cb_mima"
  android:layout_marginLeft="12dip"
  android:text="自动登录"
  android:textColor="#000000" />
 <Button
  android:id="@+id/btn_login"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:layout_below="@id/et_mima"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/cb_auto"
  android:layout_marginRight="10dip"
  android:gravity="center"
  android:text="登录"
  android:textColor="#000000"
  android:textSize="18sp"/> 

 </RelativeLayout> 

</LinearLayout>

logo.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/logo_bg"
 android:orientation="vertical" > 

 <RelativeLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_weight="3"> 

 <ProgressBar
  android:id="@+id/pgBar"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerInParent="true" /> 

 <TextView
  android:id="@+id/tv1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@id/pgBar"
  android:layout_centerHorizontal="true"
  android:text="正在登录..."
  android:textColor="#000000"
  android:textSize="18sp" />
 </RelativeLayout> 

 <LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:gravity="center"
 android:orientation="vertical" > 

 <Button
  android:id="@+id/btn_back"
  android:layout_width="70dip"
  android:layout_height="35dip"
  android:text="取消"
  android:textColor="#000000"
  android:textSize="12sp" />
 </LinearLayout> 

</LinearLayout>

welcome.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:layout_gravity="center"
 android:background="@drawable/login_bg"
 android:orientation="vertical" > 

 <TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:gravity="center"
 android:text="登陆成功,进入用户界面"
 android:textColor="#000000"
 android:textSize="20sp" /> 

</LinearLayout>

工程下载连接:android-SharedPreferences_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android本地存储SharedPreferences详解

    Android本地存储SharedPreferences详解 存储位置 SharedPreferences数据保存在: /data /data/<package_name> /shared_prefs 文件夹下,以XML格式保存,根元素为:<map />.文件名称为获取SharedPreferences实例时传递的參数值. <map> <int name="key" value="value" /> <strin

  • 详解Android中的SharedPreferences

    SharedPreferences作为Android存储数据方式之一,主要特点是: 1. 只支持Java基本数据类型,不支持自定义数据类型: 2. 应用内数据共享: 3. 使用简单. 使用方法 1.存数据 SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE); sp.edit().putString("name", "小张").putInt(&qu

  • Android SharedPreferences四种操作模式使用详解

    Android  SharedPreferences详解 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两种方式的区别: 调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享. 调用Activity对象的getPreferences()方法获得的Sh

  • Android SharedPreferences实现数据存储功能

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,不同于文件的存储方式,SharedPreferences是使用键值对(key-value)数据的方式来存储数据的.而且SharedPreferences还支持多种不同的数据类型存储,因此,使用SharedPreferences来进行数据持久化要比使用文件方便很多,下面我们就来看一下它的具体用法吧. 如何将数据存储到SharedPreferences中 要想使用SharedPreferences来存储数据,首先

  • Android数据共享 sharedPreferences 的使用方法

    Android数据共享 sharedPreferences 的使用方法 Android 中通过 sharedPreferences 来持久化存储数据并进行共享 在 Activity 或存在 Context 环境中即可使用 context.getSharedPreferences(name, Context.MODE_PRIVATE); 设置要保存的数据: mSp = context.getSharedPreferences(name, Context.MODE_PRIVATE); mEditor

  • Android SharedPreferences存储的正确写法

    SharedPreferences 特点 即便是Android小白都知道的SharedPreferences的用法,这是保存数据最简便的方法,但是不处理好的话后期维护将是一个巨大的坑.那么该如何处理好SharedPreferences才方便维护呢.先从它的特点开始入手吧. 通过Context.getSharedPreferences()获取的SharedPreferences是一个单例 SharedPreferences.edit()每次都会创建一个新的编辑对象,commit()之前一切改动都无

  • Android中SharedPreferences简单使用实例

    本文实例为大家分享了SharedPreferences简单使用案例,供大家参考,具体内容如下 MainActivity: public class SharedPreferencesTestActivity extends Activity implements View.OnClickListener{ private EditText editText; private TextView textView; private Button write; private Button read;

  • Android中使用SharedPreferences完成记住账号密码的功能

    效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如果CheckBox被选,则将配置文件中记录的账号密码信息回馈给账号密码控件,否则清空. SharedPreferences使用方法: 1.创建名为config的配置文件,并且私有 private SharedPreferences config; config=getSharedPreference

  • Android SharedPreferences实现记住密码和自动登录界面

    SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力.但它是通过其Editor接口中的一些方法来操作Shared

  • Android SharedPreferences实现记住密码和自动登录

    本文实例为大家分享了Android SharedPreferences实现记住密码和自动登录,供大家参考,具体内容如下 效果图: 第一次进入进来 勾选记住密码和自动登录成功后,第二次进来 说明:中间存在的图片或者多余的其他部分可删掉.留下最主要的填写部分和登陆按钮即可.功能还是可以实现的. XML文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="h

  • 基于localStorge开发登录模块的记住密码与自动登录实例

    关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个哥们说有私活,开发一个****模块,我那天手痒痒就和他聊了两句,然后,就决定给她做这个模块了,和他谈了谈交付时间,他说最迟两天,然后谈了谈加个,最后达成,500¥!!!这个模块其实第一天晚上我就开发出来了,那时我给他微信说,功能模块开发ok了,要不要远程查看一下,没问题的话就交了,一会他回我,好了就发过来,然后微信就转过来500¥,当时很诧异,毕竟是处女秀,然后就把项目交给他了,并且是完美交付,在客户那里,也没有出现

  • Android实现带有记住密码功能的登陆界面

    本文实例为大家分享了Android带有记住密码功能的登陆界面实现代码,供大家参考,具体内容如下 1.设计思路 主要采用SharedPreferences来保存用户数据,本Demo没有经过加密,所有一旦Android系统被ROOT的话,其他用户就可以查看用户的私有目录,密码文件就很不安全.所以真正应用在软件上面的,一定要经过加密才保存,可以选择MD5加密. SharedPreferences介绍可以参看这篇博文:http://www.jb51.net/article/84859.htm TextW

  • Android sharedPreferences实现记住密码功能

    实现记住密码功能,供大家参考,具体内容如下 编写界面交互代码: package com.example.bz0209.login; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bund

  • php中实现记住密码下次自动登录的例子

    做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求.这种功能一般都是通过cookie来实现的.本篇文章将简单说一下如何使用php实现该需求的.当然实现该需求的方法有N多种. 整个过程就是用户在登陆的时候,如果选择了记住密码或者一周内免登陆等这个选项的时候,则在用户成功登陆操作完成之后,存储一个实现自动登录的cookie的数据到数据库的用户表里面,作为下次自动登录时验证用.验证通过则自动登录,否则需要输入用户名,密码进行登录.保存的这个cookie值则可以取一

  • asp.net利用cookie保存用户密码实现自动登录的方法

    本文实例讲述了asp.net利用cookie保存用户密码实现自动登录的方法.分享给大家供大家参考.具体分析如下: 在asp.net中可以用cookie保存用户的帐户密码实现自动登录的功能,但是需要强调一下,cookie在客户端保存,是不安全的,推荐使用md5加密保存. 下面分析一下在asp.net中cookie的创建.提取与销毁的方法: 创建cookie 复制代码 代码如下: //向客户端写入Cookie HttpCookie hcUserName1 = new HttpCookie("unam

  • Python使用selenium实现网页用户名 密码 验证码自动登录功能

    好久没有学python了,反正各种理由吧(懒惰总会有千千万万的理由),最近网上学习了一下selenium,实现了一个简单的自动登录网页,具体如下. 1.安装selenium: 如果你已经安装好anaconda3,直接在windows的dos窗口输入命令安装selenium: python -m pip install --upgrade pip 查看版本pip show selenium 2.接着去http://chromedriver.storage.googleapis.com/index.

  • Android实现闪屏及注册和登录界面之间的切换效果

    在没给大家介绍正文之前先给大家说下实现思路: 先分别实现闪屏.注册界面.登录界面的活动,再用Intent将相关的活动连接起来,实现不同活动之间的跳转.此次试验代码较多,我只列出主要代码,详细的代码可用底部的下载链接下载. 一.实验效果图: 二.主要代码: (1)WelcomeActivity.Java(这部分代码实现的是第一页的欢迎页面) package com.example.flashscreendemo; import android.app.Activity; import androi

  • android实现记住用户名和密码以及自动登录

    毕业刚开始上班接触的第一个项目移动护士站,接到了第一任务就是登录,要用到自动登录功能,所以在这做个记录,以后用的时候直接来粘贴复制,废话少说,直奔主题 先上一下效果图,由于只是实现功能,界面没有美化,见谅 由于xml文件内容,就不展现在这了,自己写一写就好,爸妈再也不用担心我的学习了,so easy package com.sdufe.login; import android.app.Activity; import android.content.Context; import androi

随机推荐