SharedPerferences 简单介绍

  • 用于保存简单的键值对数据;
  • 它将数据放在 /data/data/<package name>/shared_prefs目录下,用xml文件保存MAP键值对;

SharedPerferences 使用步骤

将数据存储到SharedPerferences中:

  1.先要得到SharedPerference对象:(三种方法)

      1).使用Context类中的 getSharedPreferences() 方法,它接收两个参数,第一个参数为文件名称,第二个参数为操作模式。

       操作模式MODE_PRAVITE :只有当前程序才能对这个文件进行读写。MODE_MULTI_PROCESS :多个进程中对同一个文件进行读写。

       如:

SharedPreferences spf = getSharedPreferences("data",Context.MODE_PRIVATE);

      2).使用Activity类中的 getPreferences() 方法,它只接收一个参数--操作模式,并且会将当前活动的类名作为文件名。

       如:

SharedPreferences spf = getPreferences(MODE_PRIVATE);

      3).使用PreferenceManager类中的 getDefaultSharedPreferences() 方法,它接收一个Context参数,并且用包名作为前缀来命名文件。

       如:

SharedPreferences spf = PreferenceManager.getDefaultSharedPreferences(this);

  2.再得到SharedPreferences.Editor对象:

      使用SharedPreferences对象的 edit() 方法。

SharedPreference.Editor editor = spf.edit();

  3.开始添加数据:

      以键值对的方式写入数据。

editor.putInt("age",22);
editor.putString("name","Visen");
editor.putBoolean("singleDog",false)

  4.提交操作:

editor.commit();

从SharedPerferences中读取数据:

  提供了一系列的get方法进行数据的读取。如:

String name = editor.getString("name"," ");

  如果键所对应的值不存在,则填入设定的默认值。

简单的保存密码功能

login.xml 登录布局页面

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:stretchColumns="1"> <LinearLayout
android:layout_height="wrap_content"
android:background="@color/black"
android:orientation="vertical"> <ImageView
android:layout_width="match_parent"
android:layout_height="240dp"
android:src="@drawable/image1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/title"
android:textSize="40sp"
android:textColor="@color/red"
android:gravity="center"
android:background="@color/cyan"/>
</LinearLayout> <TableRow
android:layout_marginTop="30dp">
<TextView
android:layout_height="wrap_content"
android:text="@string/account"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/account"
android:layout_height="wrap_content"
android:inputType="text"
android:textSize="20sp"
android:textColor="@color/red"
android:gravity="center"
android:singleLine="true"/>
</TableRow> <TableRow>
<TextView
android:layout_height="wrap_content"
android:text="@string/password"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/passWord"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:textSize="20sp"
android:textColor="@color/red"
android:gravity="center" />
</TableRow> <TableLayout
android:layout_height="wrap_content"
android:stretchColumns="0"> <TableRow>
<CheckBox
android:id="@+id/saveSelect"
android:background="@color/red"
android:layout_gravity="end"/>
<TextView
android:layout_height="wrap_content"
android:text="@string/saveSelect"
android:textSize="20sp"
android:textColor="@color/white"
android:gravity="center"
android:layout_gravity="bottom"/>
</TableRow> <TableRow>
<Button
android:layout_height="wrap_content"
android:id="@+id/login"
android:gravity="center"
android:layout_span="2"
android:text="@string/login"
android:textSize="25sp"
android:textColor="@color/red"
android:background="@drawable/black_bt"/>
</TableRow>
</TableLayout>
</TableLayout>

Login.java

public class Login extends AppCompatActivity {

    private SharedPreferences spf;
private SharedPreferences.Editor spfe; private int num = 0;
private EditText account = null;
private EditText passWord = null;
private CheckBox saveSelect = null;
private Button login = null ; @Override
protected void onCreate(Bundle saveInstanceState){ //加载布局
super.onCreate(saveInstanceState);
setContentView(R.layout.login); //初始化控件
account = (EditText)findViewById(R.id.account);
passWord = (EditText)findViewById(R.id.passWord);
saveSelect = (CheckBox)findViewById(R.id.saveSelect);
login = (Button)findViewById(R.id.login); //使用Context的getSharedPreferences(String name,int mode)方法得到SharedPreferences对象;
spf = getSharedPreferences("data", Context.MODE_PRIVATE);
//使用SharedPreferences对象的edit()方法得到 SharedPreferences.Editor 的对象;
spfe = spf.edit(); //复选框是否被选中,若为选中状态,则保存过账户,要恢复数据
if(spf.getBoolean("isSelect",false)){//选中标志,默认值为false
String acc = spf.getString("account","");
String pas = spf.getString("passWord","");
account.setText(acc);
passWord.setText(pas);
saveSelect.setChecked(true);
} //设置登录按钮监听事件
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//确认帐号密码
if(account.getText().toString().equals("visen") && passWord.getText().toString().equals("dsy402645063!")){ //复选框是否被勾选,若被勾选,则需要保存账户后登录;否则直接登录且不保存账户
if(saveSelect.isChecked()){
saveDate();
}else {
spfe.clear();
spfe.commit();
} //页面跳转
Intent intent = new Intent(Login.this,MainActivity.class);
startActivity(intent);
finish();
}else {//账户或密码错误
Toast.makeText(Login.this, "account or password is invalid", Toast.LENGTH_SHORT).show();
}
}
}); } public void saveDate(){ //读取EditText中的内容
String acc = account.getText().toString();
String pas = passWord.getText().toString();
//保存数据
spfe.putString("account",acc);
spfe.putString("passWord",pas);
spfe.putBoolean("isSelect",true);
//提交
spfe.commit();
} @Override
public void onBackPressed(){
num++;
if(num == 2){
super.onBackPressed();
}else{
Toast.makeText(Login.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
}
}
}

SharedPreferences实现记住密码功能的更多相关文章

  1. 通过sharedpreferences实现记住密码功能

    通过sharedpreferences实现记住密码功能

  2. android: SharedPreferences实现记住密码功能

    既然是实现记住密码的功能,那么我们就不需要从头去写了,因为在上一章中的最佳实 践部分已经编写过一个登录界面了,有可以重用的代码为什么不用呢?那就首先打开 BroadcastBestPractice 项 ...

  3. java实现记住密码功能(利用cookie)

    <br> <input type="text" id="userName" name="userName" value=& ...

  4. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  5. cookie记住密码功能

    很多门户网站都提供了记住密码功能,虽然现在的浏览器都已经提供了相应的记住密码功能 效果就是你每次进入登录页面后就不需要再进行用户名和密码的输入: 记住密码功能基本都是使用cookie来进行实现的,因此 ...

  6. Android数据存储-通过SharedPreferences实现记住密码的操作

    在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...

  7. 【原创】js中利用cookie实现记住密码功能

    在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: HttpServletRequest request HttpServletResponse res ...

  8. vue项目实现记住密码功能

     一.谷歌浏览的残留问题 现在很多的网站都有一个需求是记住密码这个功能,为的是避免用户下次登录的时候繁琐的输入过程. 像是一些主流的浏览器(比如Chrome)都有了这个功能,而且如果你登录了Chrom ...

  9. js中记住密码功能

    js中记住密码功能(在前端实现) 直接上例子(如果你也要实现的话注意改一些变量名称,jsp代码不包含样式) Jsp代码: <form class="am-form tpl-form-l ...

随机推荐

  1. Linux动态库的查找路径

    前两天写了一个动态库,然后试图编译到程序里面去运行,结果发现编译的时候通过gcc的-L参数来指定路径仅仅能让编译通过,运行时还是会出问题的. 比如下面这个例子: main.c是主程序,sum.c中间含 ...

  2. 利用DIV+CSS制作网页过程中常用的基本概念及标签使

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  3. 无需server-U IIS7.5 在已有的多个WEB网站上配置FTP发布

    1 新建一个用于ftp登陆的计算机用户. 操作:开始→管理工具→计算机管理→本地用户和组→用户,新建一个计算机用户,设置好用户名和密码,例如:nenkea nkscl 2 在web站点文件夹下,把新建 ...

  4. Mongodb添加地理位置索引

    1.同步站点信息到mongo中(支持mysql.sqlserver数据同步) 2.在Collections文件夹下所在文档右键,在菜单中选择Add Index, 3.然后进行数据查询{ "m ...

  5. c语言学习第四天数据类型1

    int   代表整数,它在内存中占4个字节,二进制的表示方式是占用了三十二位,二进制中只包含0和1,那它的最大值就是全为1,但int是 有符号类型,所以最高位(左边的第一位)要拿出来做符号位,这样就只 ...

  6. php中empty(), is_null(), isset()函数区别

    empty(), is_null(), isset()真值表(区别) 我们先来看看这3个函数的功能描述 www.111cn.net isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返 ...

  7. ubuntu 下安装极点五笔

    安装完Ubuntu后先更新软件,我的Ubuntu的键盘输入方式系统是ibus 在终端中执行如下操作 sudo wget http://www.unicom-china.com/download/vis ...

  8. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  9. 不复杂的Autofac注入

    private static void SetAutofacWebAPI() { var builder = new ContainerBuilder(); #region 配置注册方法 string ...

  10. WPF工作笔记:本地化支持、主进程通知、两种最常用异步编程方式

    1.本地化支持 (1)重写控件默认的依赖属性LanguageProperty FrameworkElement.LanguageProperty.OverrideMetadata( typeof(Fr ...