Android中 记住密码(SharedPreferences)

Android中登录界面的记住密码功能实现,将用户输入的账号和密码以SharedPreferences方式存储(注意的是,密码要用MD5明文加密)。

界面xml文件:

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/et_qq"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="请输入您的qq号码" />

    <EditText
        android:inputType="textPassword"
        android:id="@+id/et_password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_qq"
        android:hint="请输入密码" />

    <CheckBox
        android:id="@+id/cb_remeber_pwd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_password"
        android:text="记住密码" />

    <LinearLayout
        android:layout_below="@id/cb_remeber_pwd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bt_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定" />
    </LinearLayout>

</RelativeLayout>

MainActivity.java文件:

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

/***
 *
 *1.创建一个SharedPreferences
 *2.初始化SharedPreferences  参数1 sp的文件名称 参数2 sp的保存模式
 *3.向sp里面保存数据 首先 获取一个文本编辑器 Editor
 *4.存储完毕数据记得执行commint()保存数据
 *5.读取数据 sp.getString() sp.getInt();
 */

public class MainActivity extends Activity {
	private EditText et_qq;
	private EditText et_password;
	private CheckBox cb_remeber_pwd;
	private Button bt_ok;
	/**
	 * android系统下用于数据存储的一个方便的API
	 */
	private SharedPreferences sp;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 完成sp的初始化。
		sp = getSharedPreferences("config", MODE_PRIVATE);
		et_qq = (EditText) findViewById(R.id.et_qq);
		et_password = (EditText) findViewById(R.id.et_password);
		cb_remeber_pwd = (CheckBox) findViewById(R.id.cb_remeber_pwd);

		//获取sp里面存储的数据
		String savedQQ = sp.getString("qq", "");
		String savedPassword = sp.getString("password", "");
		et_qq.setText(savedQQ);
		et_password.setText(savedPassword);

		bt_ok = (Button) findViewById(R.id.bt_ok);
		// 给按钮注册一个点击事件。
		bt_ok.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String qq = et_qq.getText().toString();
				String password = et_password.getText().toString();
				if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(password)) {
					Toast.makeText(getApplicationContext(),
							"对不起,qq号" + "或者密码不能为空", 0).show();
				} else {
					// 检查用户是否勾选了 记住密码的选项。
					if (cb_remeber_pwd.isChecked()) {
						// 说明勾选框被选中了。把用户名和密码给记录下来
						// 获取到一个参数文件的编辑器。
						Editor editor = sp.edit();
						editor.putString("qq", qq);
						editor.putString("password", MD5utils.encode(password));
						// 把数据给保存到sp里面
						editor.commit();
						Toast.makeText(getApplicationContext(), "用户信息已经保存", 1)
								.show();
					}
				}
			}
		});
	}

}

MainActivity.java调用的MD5utils.java文件:

package com.itheima.qqlogin;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import android.os.Message;

public class MD5utils {
	/**
	 * md5加密的工具类
	 *
	 * @param password
	 * @return
	 */
	public static String encode(String password) {
		try {
			MessageDigest digest = MessageDigest.getInstance("md5");
			byte[] results = digest.digest(password.getBytes());
			StringBuilder sb = new StringBuilder();
			for(byte b : results){
				int number = b&0xff;
				String hex = Integer.toHexString(number);
				if(hex.length()==1){
					sb.append("0");
				}
				sb.append(hex);
			}
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}
}

账号和密码的存储路径如下:

导出config.xml文件,可以看到用户密码的MD5明文加密前后的xml文件里的数据:

时间: 2024-10-24 05:22:12

Android中 记住密码(SharedPreferences)的相关文章

MiniTwitter中记住密码功能的实现

主要功能代码如下: package com.liu.activity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; impor

Android Minitwitter 记住密码功能

MiniTwitter记住密码功能实现      首先,在进入本次主要内容之前说一下,本功能的实现是在twitter登陆界面的基础上操作,但本次主要任务内容是记住密码的功能实现,所以登陆界面不在详细介绍. 如图:为本次实验的结果图: 1.界面介绍 布局构造:布局分为三大部分 (1)背景:使用LinearLayout布局: (2)浅蓝色部分:使用RelativeLayout布局: 注意:这里用到圆角设置corners和填充色设置solid: (3)输入框和按钮:使用TextView.EditTex

Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)

原文:http://blog.csdn.net/liuyiming_/article/details/7704923 SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是

Android实战(一)学习了多个控件实现登录及记住密码功能

首先确定一下需要的控件: 两个EditText:用于输入账号和密码 一个button:用于登录查看账号和密码是否正确 一个checkbox:用于记住密码和账户 一个Androidstudio:用于编写代码,当然牛逼的人也推荐使用记事本写代码,废话不多说开工. 创建一个App项目加入两个布局两份Java.class ,在Androidmanifest.xml里面注册第二个布局. 准备完毕 1.在初始布局中加入上述控件,并为其设置好id 代码如下所示 <LinearLayout xmlns:andr

Android记住密码后自动登录

/** * * @author alex * @version 2014-7-31下午5:25:45 * */ public class LoginActivity extends Activity { private EditText name; private EditText pass; private CheckBox isRemenber; private CheckBox isLoginSelf; private Button longin; private ProgressDial

(十)android 中数据存储与访问——使用SharedPreferences保存数据

10.1 SharedPreferences概述 数据存储方式有五种,前面介绍的是通过IO流以文件的方式存储数据,这里学习的SharedPreferences方式保存的数据,主要保存的是用户的偏好设置. 很多时候,我们开发的程序是需要向用户提供软件参数设置功能的.用户根据自己的兴趣爱好对软件的各项参数进行配置,以符合自己的使用习惯. 例如,我们使用eclipse的时候,可以设置字体的显示颜色.大小等.Eclipse内部使用的是xml格式的文件来保存软件的配置参数. 如果我们要在安卓中保存用户在软

Android记住密码自动登录的实现

我采用的是SharedPreferences来存取数据的,所以先简单的介绍一下SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法

记住密码(Android登录界面)

在编写安卓登录界面时,我们如何记住密码,方便下一次登录呢? 首先,先创建一个安卓项目(我的版本是4.4.2的),名字为"记住密码" 然后在res文件夹下找到layout文件夹,找到activity_main.xml或fragment_main.xml,在里面输入或拖拽按钮 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http

安卓记住密码

在安卓开发中,我们做用户登录的时候需要将用户名和密码保存,下次打开的时候记住应户名和密码,也就是记住用户名和密码.关于记住用户名和密码的保存方式有多种,这里介绍SharaedPreferenses保存方式. 这种保存方式主要是以XML的格式来保存文件的,在开发中的explorer中可以看见.下面看一个小例子,主要是代码,希望对开发者有所帮助: 实现的主要代码: private EditText username,password; private static final String FILE