欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android通过SharedPreferences实现自动登录记住用户名和密码功能

程序员文章站 2023-01-26 20:50:42
最近android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠sharedpreferences进行实现。 sharedpreferences简介 sha...

最近android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠sharedpreferences进行实现。

sharedpreferences简介

sharedpreferences也是一种轻型的数据存储方式,它的本质是基于xml文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。sharedpreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过editor对象实现。

sharedpreferences使用实例:记住用户名密码自动登录

大致了解了sharedpreference之后,接下来看个记住用户名密码自动登录的例子:

package com.dt5000.ischool.activity; 
import android.annotation.suppresslint; 
import android.content.context; 
import android.content.intent; 
import android.content.sharedpreferences; 
import android.content.sharedpreferences.editor; 
import android.os.bundle; 
import android.util.log; 
import android.view.keyevent; 
import android.view.view; 
import android.widget.checkbox; 
import android.widget.edittext; 
import com.dt5000.ischool.util.dtutil; 
import com.dt5000.ischool.util.myapplication; 
/** 
 * @author: duanyr 
 * @创建时间: 2012-11-13 下午2:36:47 
 * 
 * @类说明:登录界面 
 */ 
@suppresslint("worldreadablefiles") 
public class loginactivity extends dtutil { 
  private static final string tag = "用户登录"; 
  private edittext username; 
  private edittext password; 
  private checkbox autologin; 
  private sharedpreferences sharedpreferences; 
  private string message; 
  @override 
  public void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    myapplication.getinstance().addactivity(this); 
    sharedpreferences = this.getsharedpreferences("userinfo",context.mode_world_readable); 
    if (sharedpreferences.getboolean("auto_ischeck", false)) { 
      intent intent = new intent(); 
      intent.setclass(loginactivity.this, mainactivity.class); 
      startactivity(intent); 
    } else { 
      setcontentview(r.layout.activity_login); 
      initview(); 
    } 
  } 
  /** 
   * 初始化视图控件 
   */ 
  public void initview() { 
    log.i(tag, "初始化视图控件"); 
    username = (edittext) findviewbyid(r.id.username); 
    password = (edittext) findviewbyid(r.id.password); 
    autologin = (checkbox) findviewbyid(r.id.autologin); 
    // 默认记住用户名 
    username.settext(sharedpreferences.getstring("username", "")); 
  } 
  /** 
   * 点击登录按钮时触发的方法 
   * @param view 
   */ 
  public void userlogin(view view) { 
    string usernamestring = username.gettext().tostring(); 
    string passwordstring = password.gettext().tostring(); 
    if (validateuser(usernamestring, passwordstring)) { 
      editor editor = sharedpreferences.edit(); 
      editor.putstring("username", usernamestring); 
      if (autologin.ischecked()) {// 自动登录 
        editor.putstring("password", passwordstring); 
        editor.putboolean("auto_ischeck", true).commit(); 
      } 
      editor.commit(); 
      intent intent = new intent(); 
      intent.setclass(loginactivity.this, mainactivity.class); 
      startactivity(intent); 
    } else { 
      alert(this, message); 
    } 
  } 
  //游客登录 
  public void visitorlogin(view view) { 
    intent intent = new intent(); 
    intent.setclass(loginactivity.this, mainactivity.class); 
    startactivity(intent); 
  } 
  /** 
   * 验证用户名密码是否正确 
   * 
   * @param username 
   * @param password 
   * @return 
   */ 
  public boolean validateuser(string username, string password) { 
    boolean flag = false; 
    try { 
      //...此处为调用web服务,验证用户名密码的服务,特此省略 
      flag = true; 
    } catch (exception e) { 
      // todo auto-generated catch block 
      log.e(tag, e.getmessage()); 
      message = "连接服务器失败"; 
    } 
    return flag; 
  } 
  /** 
   * 点击退出按钮时触发的方法 
   */ 
  public void logout_listener(view view) { 
    dialog_exit(this); 
  } 
  /** 
   * 监听返回按钮,此为登录界面再返回的话给出退出提示 
   */ 
  public boolean onkeydown(int keycode, keyevent event) { 
    if (keycode == keyevent.keycode_back && event.getrepeatcount() == 0) { 
      dialog_exit(this); 
      return false; 
    } 
    return false; 
  } 
} 

页面布局截图:

Android通过SharedPreferences实现自动登录记住用户名和密码功能

生成的配置文件位置和代码

Android通过SharedPreferences实现自动登录记住用户名和密码功能

userinfo.xml的具体代码如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<string name="username">777</string> 
<string name="password">111111</string> 
<boolean name="auto_ischeck" value="true" /> 
</map> 

以上所述是小编给大家介绍的android通过sharedpreferences实现自动登录记住用户名和密码功能,希望对大家有所帮助