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

发布时间 - 2026-01-11 02:13:08    点击率:

最近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; 
  } 
} 

页面布局截图:

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

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实现自动登录记住用户名和密码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# android记住密码  # 自动登录  # android  # sharedpreferences  # SharedPreference引发ANR原理详解  # Android SharedPreferences性能瓶颈解析  # Android中SharedPreference详解及简单实例  # Android SharedPreferences四种操作模式使用详解  # Android SharedPreferences实现记住密码和自动登录界面  # SharedPreference 初始化源码解析  # 小编  # 在此  # 而不  # 给大家  # 用户登录  # 所述  # 此为  # 给我留言  # 配置文件  # 感谢大家  # 键值  # 看个  # 是否正确  # 数据存储  # 疑问请  # 有任何  # 下午  # 目录下  # 是基于 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 昵图网官方站入口 昵图网素材图库官网入口  详解Oracle修改字段类型方法总结  大连网站制作公司哪家好一点,大连买房网站哪个好?  Android GridView 滑动条设置一直显示状态(推荐)  Laravel distinct去重查询_Laravel Eloquent去重方法  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何自定义建站之星模板颜色并下载新样式?  如何在阿里云高效完成企业建站全流程?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  高端云建站费用究竟需要多少预算?  PHP正则匹配日期和时间(时间戳转换)的实例代码  Linux安全能力提升路径_长期防护思维说明【指导】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何快速搭建高效可靠的建站解决方案?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel如何处理文件下载请求?(Response示例)  ,怎么在广州志愿者网站注册?  如何用西部建站助手快速创建专业网站?  Laravel如何配置和使用缓存?(Redis代码示例)  如何为不同团队 ID 动态生成多个“认领值班”按钮  使用Dockerfile构建java web环境  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何将凡科建站内容保存为本地文件?  音响网站制作视频教程,隆霸音响官方网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何在七牛云存储上搭建网站并设置自定义域名?  如何快速启动建站代理加盟业务?  Android自定义listview布局实现上拉加载下拉刷新功能  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  javascript基于原型链的继承及call和apply函数用法分析  C++时间戳转换成日期时间的步骤和示例代码  在Oracle关闭情况下如何修改spfile的参数  长沙做网站要多少钱,长沙国安网络怎么样?