全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

最近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 初始化源码解析  # 小编  # 在此  # 而不  # 给大家  # 用户登录  # 所述  # 此为  # 给我留言  # 配置文件  # 感谢大家  # 键值  # 看个  # 是否正确  # 数据存储  # 疑问请  # 有任何  # 下午  # 目录下  # 是基于 


相关文章: MySQL查询结果复制到新表的方法(更新、插入)  网站制作企业,网站的banner和导航栏是指什么?  如何在景安云服务器上绑定域名并配置虚拟主机?  建站主机选购指南:核心配置与性价比推荐解析  移民网站制作流程,怎么看加拿大移民官网?  定制建站哪家更专业可靠?推荐榜单揭晓  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  建站之星如何快速解决建站难题?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何在阿里云购买域名并搭建网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星展会模版如何一键下载生成?  建站之星导航配置指南:自助建站与SEO优化全解析  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何确保西部建站助手FTP传输的安全性?  香港服务器如何优化才能显著提升网站加载速度?  ,南京靠谱的征婚网站?  家具网站制作软件,家具厂怎么跑业务?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何实现建站之星域名转发设置?  如何选择适配移动端的WAP自助建站平台?  如何快速搭建高效香港服务器网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何零成本快速生成个人自助网站?  如何通过西部建站助手安装IIS服务器?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  广平建站公司哪家专业可靠?如何选择?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  ,在苏州找工作,上哪个网站比较好?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  手机网站制作与建设方案,手机网站如何建设?  如何用PHP工具快速搭建高效网站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  制作网站的软件免费下载,免费制作app哪个平台好?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  家庭建站与云服务器建站,如何选择更优?  小程序网站制作需要准备什么资料,如何制作小程序?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  如何正确下载安装西数主机建站助手?  如何通过wdcp面板快速创建网站?  *服务器网站为何频现安全漏洞?  实现虚拟支付需哪些建站技术支撑?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何选择高效可靠的多用户建站源码资源?  如何快速生成专业多端适配建站电话? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。