使用SharedPreferences类存储数据时,首先需要调用getSharedPreferences(String name,int mode)方法获取实例对象。由于该对象本身只能获取数据,不能对数据进行存储和修改,因此需要调用SharedPreferences类的edit()方法获取可编辑的Editor对象,最后通过该对象的putXxx()方法存储数据,示例代码如下

//或取sp对象,参数data表示文件名,MODE_PRIVATE表示文件操作模式
SharePreferences sp=getSharedPreferences("data",MoDE_PRIVATE);
SharedPreferences.Editor editor=sp.edit();//获取编辑器
editor.putString("name","传智播客");//存入String类型数据
editor.putString("age",8);//存入int类型数据
editor.commit();//提交修改

Editor对象是以key/value的形式保存数据的,并且根据数据类型的不同,会调用不同的方法。需要注意的是,操作完数据后,一定要调用commit()方法进行数据提交,否则所有操作不生效。

注意:SharedPreferences中的Editor编辑器是通过key/value(键值对)的形式将数据保存在data/data/<packagename>/shared_prefs文件夹下文件中,其中value值只能是float,int,long,boolean,String,Set<String>类型数据。

2.读取SharedPreferences中的数据

获取SharedPreferecnes对象,然后通过该对象的getXXX()方法根据相应key值获取到value的值即可,示例代码如下:

SharedPreferences sp=getSharedPreferences("data",MODE_PRIVATE);
String data=sp.getString("name","");//获取用户名//getXXX()方法的第二个参数为缺省值,如果sp中不存在该key,将返回缺省值,
例如getString("name",""),若name不存在则key就返回空字符串

3.删除SharedPreferences中的数据

需要调用Editor对象的remove(String key)方法或者clear()方法即可,示例代码如下:

editor.remove("name");//删除一个数据
editor.clear();//删除所有数据

然后展示该案例

程序运行成功后,在界面中输入账号和密码,点击”登录"按钮,会弹出提示信息“登录成功”与“保存成功”,此时如果将程序退出,再重新打开会发现QQ账号和密码仍然显示在当前的EditText中

在activity-main.xml中添加以下代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#E6E6E6"android:orientation="vertical"android:padding="10dp"><ImageViewandroid:layout_width="70dp"android:layout_height="70dp"android:layout_centerHorizontal="true"android:layout_gravity="center_horizontal"android:layout_marginTop="30dp"android:src="@drawable/head" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="15dp"android:background="@android:color/white"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="账号:"android:textColor="#000"android:textSize="20sp" /><EditTextandroid:id="@+id/et_account"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:background="@null"android:padding="10dp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:background="@android:color/white"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_password"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="密码:"android:textColor="#000"android:textSize="20sp" /><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:background="@null"android:inputType="textPassword"android:padding="10dp" /></LinearLayout><Buttonandroid:id="@+id/btn_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="25dp"android:background="#3C8DC4"android:text="登录"android:textColor="@android:color/white"android:textSize="20sp" />
</LinearLayout>

创建一个工具类SaveQQ,用来保存qq账号和密码

package com.example.qqlogin;import android.content.Context;
import android.content.SharedPreferences;import java.util.HashMap;
import java.util.Map;public class SaveQQ {//保存QQ账号和登录密码到data.xml文件中public static boolean saveUserInfo(Context context, String account, String password){SharedPreferences sp=context.getSharedPreferences("data",Context.MODE_PRIVATE);SharedPreferences.Editor edit=sp.edit();edit.putString("username",account);edit.putString("pwd",password);edit.commit();return true;}//从data。xml文件中获取存储的QQ账号和密码public static Map<String,String> getUserInfo(Context context){SharedPreferences sp=context.getSharedPreferences("data",Context.MODE_PRIVATE);String account=sp.getString("username",null);String password=sp.getString("pwd",null);Map<String,String> userMap=new HashMap<String,String>();userMap.put("account",account);userMap.put("password",password);return userMap;}
}

在mianActivity中添加以下代码

package com.example.qqlogin;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import java.util.Map;public class MainActivity extends AppCompatActivity implements View.OnClickListener
{private EditText et_account;   //账号输入框private EditText et_password; //密码输入框private Button btn_login;      //登录按钮@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();//通过工具类SaveQQ中的getUserInfo()方法获取QQ账号和密码信息// Map<String, String> userInfo = FileSaveQQ.getUserInfo(this);Map<String, String> userInfo = SaveQQ.getUserInfo(this);if (userInfo != null) {et_account.setText(userInfo.get("account"));   //将获取的账号显示到界面上et_password.setText(userInfo.get("password")); //将获取的密码显示到界面上}}private void initView() {et_account = (EditText) findViewById(R.id.et_account);et_password = (EditText) findViewById(R.id.et_password);btn_login = (Button) findViewById(R.id.btn_login);//设置按钮的点击监听事件btn_login.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_login://当点击登录按钮时,获取界面上输入的QQ账号和密码String account = et_account.getText().toString().trim();String password = et_password.getText().toString();//检验输入的账号和密码是否为空if (TextUtils.isEmpty(account)) {Toast.makeText(this, "请输入QQ账号", Toast.LENGTH_SHORT).show();return;}if (TextUtils.isEmpty(password)) {Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();return;}Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();//保存用户信息boolean isSaveSuccess = SaveQQ.saveUserInfo(this, account,password);/*  boolean isSaveSuccess = SPSaveQQ.saveUserInfo(this, account, password);*/if (isSaveSuccess) {Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();}break;}}
}

这是用到的一张图片资源       

为了验证QQ信息是否保存到了SharedPreferences中,可以在Device FileExplorer 视图中找到该程序的share_prefs目录,然后找到data.xml。

Android的SharePreferences存储的案例(qq账号存储)相关推荐

  1. 安卓---第5章 数据存储---保存QQ账号与密码

    文章目录 案例1: 使用文件存储 保存QQ账号与密码 功能描述 saveqq_1.xml FileSaveQQ.java saveqq_1 案例2 使用SP保存QQ账号与密码 功能描述 SPSaveQ ...

  2. android移动应用基础教程--qq账号与密码

    android移动应用基础教程--qq账号与密码 android移动应用基础教程p115案例 实战演练-保存QQ账号密码. activity_main.xml <?xml version=&qu ...

  3. 【Android实战】保存QQ账号与密码

    大家好,我是汤姆凯特. 写在前面:今天用保存QQ账号和密码的实战演练,带大家掌握Android存储中最基本的文件存储方式 文件存储是Android中最基本的一种数据存储方式,它与Java中的文件存储类 ...

  4. 简单步骤,使用 Android studio 实现保存 QQ 账号密码,和简易 QQ 用户登录界面

    利用 Android studio 2021 软件输出一个简易用户登录界面,拥有头像并且能够实现对自行输入的账号密码进行保存,文件名为 saveqq,功能实现对账号与密码的输入和存储,简单QQ界面布局 ...

  5. 《Android移动应用基础教程》之保存QQ账号和密码

    FileSaveQQ.java package njitt.software.saveqq;import android.content.Context;import java.io.FileInpu ...

  6. android 帐号密码xml,《Android移动应用基础教程》之保存QQ账号和密码

    FileSaveQQ.java package njitt.software.saveqq; import android.content.Context; import java.io.FileIn ...

  7. Python学习笔记7:实操案例四(支付密码的验证,模拟QQ账号登录,商品价格竞猜,星座看运势)

    Python学习笔记7:实操案例四(支付密码的验证,模拟QQ账号登录,商品价格竞猜,星座看运势) 1.支付密码的验证: 这个主要就是调用isdigit()函数判断字符串是不是全是数字组成. pwd=i ...

  8. [Android分享] 使用QQ账号,新浪微博账号登录第三方应用

    转载--http://www.eoeandroid.com/thread-325071-1-1.html 最近公司由于项目要求,在应用中集成了QQ和新浪微博登录的功能,以前并没有接触过这方面的东西,前 ...

  9. android qq账号登陆验证手机号码,qq绑定的手机号换了,登陆需要手机验证,怎么办?...

    可以通过[QQ安全中心]-[密码管理]-[QQ申诉]的方式找回密码,再通过新的密码设置登录QQ.也可以在登陆时选择[找回密码],选择[QQ安全中心]-[登陆QQ账号]-[选择密保工具]-[解绑绑定的手 ...

最新文章

  1. STL vector
  2. 在VmWare Workstation 6.5上安装Esx 3.5 U3之二
  3. C++ Primer 5th笔记(10)chapter10 泛型算法 :迭代器
  4. python后端开发工程师做什么-如何面试Python后端工程师?
  5. 4/100. Maximum Depth of Binary Tree
  6. SAP CRM one order Appointment table
  7. 页面返回顶部(方法比较)
  8. Couchbase 101:从Java应用程序创建视图(MapReduce)
  9. viper4android fxifi,ViPer4android. FX顶级音效!
  10. coredata 自动化刷新uitableview数据
  11. 解决在firefox浏览器不支持ajax的transport.responseXml方法问题
  12. sap business one 开发_敏捷软件开发实践:估算与计划读书笔记120第18章 估算速度...
  13. java给图片增加水印(图片水印,文字水印)
  14. 清华大学信息 计算机科学与技术,清华大学计算机科学与技术系导师简介:陈渝...
  15. 麦吉尔 计算机科学学分,麦吉尔大学计算机
  16. 计算机网络拓扑结构课件,计算机网络拓扑结构的分析及选择
  17. springboot小区公共停车位管理毕业设计-附源码201517
  18. Mysql统计每个小时或半小时数据的数量
  19. 数独-图片定位分割数字
  20. x~N(0,4),F(x)为其分布函数,则F(x)

热门文章

  1. vue移动端微信授权登录插件封装
  2. Java文档注释(利用javadoc生成HTML文档)
  3. 浏览器之旅:从输入网址到页面呈现的神秘过程揭秘(一)
  4. CAD随机几何3D插件
  5. Array数组的方法
  6. python变量在使用前可以不赋值即使用_python定义变量不赋值
  7. 区块链钱包有哪些?kinmall:它能成为区块链行业的支付宝...
  8. 解决fitz模块报错RuntimeError: Directory ‘static/‘ does not exist
  9. 一个爬虫代码价值 7000 万!
  10. excel相乘再相加_excel将两组数据相乘后再求和怎么做