解析

什么是Shared Perferences

应用场景

  • 配置信息
  • 主题信息
  • 游戏的积分信息等

存储路径

在本应用中的data-data-应用包-自定义名称xml文件下保存写入的数据信息

使用

获取步骤

读取步骤

实例

代码

1、需求:实现自动登录,例如qq的可以设置自动登录,然后下一次就不用再写登录账号密码

2、activity_main.xml:简易实现输入框

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical"
tools:context=".MainActivity"> <EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="QQ号/手机号/邮箱"
android:layout_marginTop="300dp"/>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="密码"
android:layout_marginTop="20dp"/>
<ImageButton
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login"
android:layout_gravity="center"/>
</LinearLayout>

3、MainActivit.java

public class MainActivity extends AppCompatActivity {
//定义后台账号和密码
private String name = "fxz", pwd = "123"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取编辑框用户名和密码
EditText username_EditText = findViewById(R.id.username);
EditText password_EditText = findViewById(R.id.password);
//获取登录按键
ImageButton login = findViewById(R.id.login);
//获取Shared Preferences对象
final SharedPreferences sharedPreferences = getSharedPreferences("qqAutoLogin", MODE_PRIVATE);
/**********实现自动登录功能************/
//获取账号信息
String username = sharedPreferences.getString("username", null);
String password = sharedPreferences.getString("password", null);
//判断用户名和密码是否为空
if (username != null && password != null) {
//如果用户名和密码相同,实现自动登录
if (username.equals(name) && password.equals(pwd)) {
//通过Intent跳转登录
Intent intent = new Intent(MainActivity.this, MessageActivity.class);
//启动跳转界面
startActivity(intent);
}
} else {
/**********实现手动登录并储存账号和密码************/
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取输入的账号和密码
String local_username=username_EditText.getText().toString();
String local_password=password_EditText.getText().toString();
//获取Editor对象
SharedPreferences.Editor editor=sharedPreferences.edit();
if(local_username.equals(name) && local_password.equals(pwd)){
//这里保存账号和密码并提交有些多余
editor.putString("username",local_username);
editor.putString("password",local_password);
//提交信息
editor.commit();
//通过Intent跳转登录
Intent intent = new Intent(MainActivity.this, MessageActivity.class);
//启动跳转界面
startActivity(intent);
Toast.makeText(MainActivity.this, "已保存账号和密码", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "账号和密码错误", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}

文件查看

使用Android Studio

安卓开发学习10-1:数据存储:Shared Preferences存储的更多相关文章

  1. 安卓开发学习之AutoCompleteTextView

    最近在学习安卓开发,开始是看视频学的,基本上是照着老师的操作来,但其实老师也是按照安卓的开发文档来教的,于是决定试试自己看文档来学. 今天学到AutoCompleteTextView,一上来先按照Li ...

  2. 安卓开发学习笔记(三):Android Stuidio无法引用Intent来创建对象,出现cannot resolve xxx

    笔者在进行安卓开发时,发现自己的代码语法完全没有问题.尤其是创建intent对象的时候,语法完全是正确的,但是Android Stuidio却显示报错,Intent类显示为红色,如图所示: 代码如下所 ...

  3. 安卓开发学习之Menu

    安卓开发中菜单是一个很重要的组件,从安卓开发文档(http://wear.techbrood.com/guide/index.html)中可以看到,安卓UI设计中的Menu主要分为: A.Option ...

  4. 安卓开发学习日记 DAY1

    1.eclipse安装,很简单 2.安卓sdk manager 下载安装 sdk manager是一个安卓开发所使用的sdk文件的管理程序,可以使用这个程序在官网上下载相应的安卓的api等.因为需要在 ...

  5. Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?

    本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法. 1. 2.实现代码: /datasave/src/com/amos/datasave/savePasswordSer ...

  6. Android开发学习之路--数据持久化之初体验

    上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android开发吧,这里学习数据持久化的 知识. 其实数据持久化就是数据可以保存起来,一般我们保存数据都是以文件,或者数据库的形式 ...

  7. 吴裕雄--天生自然 R语言开发学习:导入数据

    2.3.6 导入 SPSS 数据 IBM SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc 包中的spss.get()函数.函数spss.get() ...

  8. Android开发学习之SQLite数据存取浅析

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...

  9. 安卓开发学习历程1——《第一行代码》coolweather项目setOnItemClickListener函数,Sql语句修改对模拟app程序机影响

    今天,将<第一行代码>最后实战的coolweather项目,认真做了一遍. 今晚,在书中第一阶段开发代码认眞在Android studio敲完,发现setOnItemClickListen ...

  10. Web jsp开发学习——连接数据库,数据的增加和删除

    1.首先在newlist界面增加三个图表,带上事件 newlist.jsp <%@ page language="java" contentType="text/h ...

随机推荐

  1. 阿里播放器Aliplayer遇到的所有坑

    1,关于阿里播放器使用过的几种播放方式 url (source) ① 要在创建播放器前要拿到资源否则会报错 ② 在有不同清晰度的资源时  直接调用 player.loadByUrl() 方法会报错 官 ...

  2. 常用的基础方法,对象转数组,phpcurl请求

    /** * CURL方法 * @param type $url * @param type $https * @param type $method * @param type $data * @re ...

  3. crontal 计划任务

    crontab每分钟定时执行: */1 * * * * service mysqld restart //每隔1分钟执行一次 */10 * * * * service mysqld restart / ...

  4. SqlServer基礎

    REVERSE(欄位) 反轉 CHARINDEX(篩選字符,欄位,[start]) 例:CHARINDEX('/',ProImage,13) 從13位查詢/所在索引 SUBSTRING(欄位,star ...

  5. Nginx日志切割工具logrorate

    1.logrotate系统工具 linux自带logrotate工具 主流的linux系统版本,都默认安装logrotate包,作为分割日志的系统工具,可以方便将日志按周期(日,周,月)和大小进行分割 ...

  6. 通过parameters用python造数据

    1.先通过命令安装allpairs库.allpairspy,命令为:pip install allpairs.pip install parameters,安装成功 2.通过python去写出来,如图 ...

  7. git 修改commit 备注

    1.没有push 1.修改最后一次的提交备注 git commit --amend 输入 i 进行编辑模式,修改好以后 esc 退出编辑模式 :wq 保存并退出. 2.修改之前的备注 git reba ...

  8. AC和瘦AP组网

    ac和瘦ap组网 参考了这篇文章[Cisco Packet Tracer]WLC配置瘦AP指南_时间进行的小宇的博客-CSDN博客_思科瘦ap配置命令 服务器server-pt配置 先设置IP地址,随 ...

  9. Java笔记_变量作用域

    变量作用域 在Java中主要的变量就是属性(成员变量)和局部变量. 局部变量一般是指在成员方法中定义的变量. 全局变量作用域:整个类体.局部变量(除属性意以外的其他变量)作用域:为定义它的代码块中! ...

  10. js 实例对象 面向对象编程

      1.对象是什么 面向对象编程(Object Oriented Programming,缩写为 OOP)是目前主流的编程范式.它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作 ...