android开发关于sp共享数据存储(记住账号密码储存数据例子)

本文内容过sp共享数据存储实现记住账号密码功能

***************************************************************************************************************************

public class MainActivity extends Activity {

private AutoCompleteTextView completeTextView;

private EditText editText;

private SharedPreferences sp;

private CheckBox issaveBox;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//此方法在下面有具体的实现

findMyView();

}

//得到数据集合的方法

private List<String> initNameData() {

List<String> list = new ArrayList<String>();

Map<String, ?> map = sp.getAll();

Set<String> set = map.keySet();

//通过foreath遍历

for (String name : set) {

if(!name.equals("name") && !name.equals("pwd") && !name.equals("issave")){

list.add(name);

}

}

return list;

}

private void findMyView() {

completeTextView = (AutoCompleteTextView) findViewById(R.id.text_autocomplete);

editText = (EditText) findViewById(R.id.text_edit);

issaveBox = (CheckBox) findViewById(R.id.checkbox_issave);

//获得共享数据对象,共享数据对象只负责读数据,写数据由editor对象完成

//参数一:保存数据的文件名,不用加后缀,自动会生成usrmsg.xml文件,存在/data/data/包名/shared_prefs目录下

//参数二:私有模式

sp = getSharedPreferences("userInfo", MODE_PRIVATE);

/*此XML文件即为通过SP存入手机内存中的XML文件,数据如下(总共存了两个账号,一个是记住密码的zhangsan,123 另一个是不记住密码的lisi,4567)

* <?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>

<map>

<boolean name="issave" value="false" />

<string name="zhangsan">123</string>

<string name="pwd">123</string>

<string name="lisi">4567</string>

<string name="name">zhangsan</string>

</map>*/

//读取sp中的数据,设置给控件

//如果用户选择过记住, 加载用户名密码给控件

boolean isSave = sp.getBoolean("issave", false);

issaveBox.setChecked(isSave);

if (isSave) {

String uname = sp.getString("name", "");

completeTextView.setText(uname);

String upwd = sp.getString("pwd", "");

editText.setText(upwd);

}

List<String> usernameList = initNameData();//此方法是得到数据集合,封装在上面

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1,

usernameList);

completeTextView.setAdapter(adapter);

completeTextView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,

int position, long id) {

//这里不能用position来获取数据,因为position当用户输入不同数据的时候筛选对应数据的position是不相同的

//参数二的view是当前被单击的对象,用此对象来获取数据

//因为前面给autoComplete控件设置布局用的是安卓系统自带的布局文件,里面含有的只有一个textView,故:

TextView textView = (TextView) view;

String name = textView.getText().toString();

//获得用户选择的用户名后,通过用户名获得相应的密码并给其控件设置上值,实现记住账号密码功能

//getString方法,参数一是关键字,参数二是当搜寻不到的时候默认值填上

String pwd = sp.getString(name, "");

editText.setText(pwd);

}

});

}

public void login(View view){

String name = completeTextView.getText().toString();

String pwd = editText.getText().toString();

//当点击确定按钮时,需要写入数据,这是写数据由editor对象完成,

if(TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)){

//判断输入的数据是否为空,为空则稍作提示

Toast.makeText(this, "账户名或密码不能为空", Toast.LENGTH_SHORT).show();

}else {

//当点击确定按钮时,需要写入数据,这是写数据由editor对象完成

Editor editor = sp.edit();

if(issaveBox.isChecked()){

//当用户选择记住账户密码的时候,把选项(记住密码)及帐号密码分开存入sp文件中方便获取

editor.putBoolean("issave", true);

editor.putString("name", name);

editor.putString("pwd", pwd);

}else {

editor.putBoolean("issave", false);

}

//当用户没有选择记住账户密码时,以用户输入的用户名作为键,密码作为值存入sp文件中,方便完成自动文本框

editor.putString(name, pwd);

//当数据存储完后,必须提交,只有提交了数据才能真正的存入到sp文件当中

editor.commit();

}

}

}

时间: 2024-10-13 03:02:56

android开发关于sp共享数据存储(记住账号密码储存数据例子)的相关文章

★android开发--ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱)

例子中用于解析Json的Gson请自己Google下载 主Activity: package COM.Example.Main; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import COM.Example.Main.R; import COM.Example.Main.stringG

利用SharedPreferences完成记住账号密码的功能

利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如果CheckBox被选,则将配置文件中记录的账号密码信息回馈给账号密码控件,否则清空. SharedPreferences使用方法: 1.创建名为config的配置文件,并且私有 private SharedPreferences con

struts2的记住账号密码的登录设计

一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来,界面搭建出来之后,我首先想的是如何用cookie来实现记住账号密码,这里我选择的是在class中实现这个cookie. jsp页面中的checkbox标签作为一个标记参数来判断用户是否选择了记住账号和密码,在登录提交之后,伴随着登录的账号.密码.激活码一起传递到action中,checkbox选中

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

cocos2d JS 本地缓存存储登陆记住账号密码-&gt;相当于C++中的UserDefault

在cocos-js 3.0以上的版本中,当我们用到本地存储的时候,发现以前用到的UserDefault在JS中并没有导出,而是换成了LocalStorage. 在LocalStorage.h文件中我们查看了一下源码,使用方法就是设置Key-Value的方式 存储数据:cc.sys.localStorage.setItem("key","value") 获取数据:cc.sys.localStorage.getItem("key") 移除数据:cc.

海量非结构化数据存储难题 ,杉岩数据对象存储完美解决

"过去几年,大数据产业更多关注的是如何处理海量.多源和异构的数据,但我们必须承认这些只是冰山一角.目前,结构化数据仅占到全部数据量的20%,其余80%都是以文件形式存在的非结构化和半结构化数据.伴随非结构化数据呈现爆发之势,对象存储市场近两年保持强劲增长,IDC预计,软件定义存储(SDS)市场未来五年复合增长率将达到28.8%." 传统IT架构渐成"过去式" 非结构化数据倒逼存储变革 今天,许多企业已经意识到,结构化数据仅仅是企业所拥有数据的一小部分.与业务信息系统

一般数据存储和批量数据存储比较--10万条数据

一.在数据库中建立Student表 二.创建10万条数据 创建数据 三.创建一般数据存储方法 public static void SaveGeneral(DataTable dt) { string strConn = @"Data Source=.;Initial Catalog=Test;Integrated Security=True"; SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlComma

运用js依靠cooker,实现在输入框中短时间记住账号密码

用户在输入账号密码时,一些网站会自动在输入栏中暂时保存用户输入的信息,让用户可以在短时间内不用再次输入账号密码,登录自己的账号,效果图如下:. 首先我们应该有自己的登录界面,这个利用login.html文件作为登录界面,css html就可以实现;上图的代码比较繁琐,就不做仔细研究了,就简单的写一个form表单作为代替代码如下: <form action="sever.php" method="post" enctype="application/x