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;@Overrideprotected 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() {@Overridepublic 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文件里的数据:


更多相关文章

  1. Android心得8--Internet
  2. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  3. android中添加自己的驱动
  4. android adapter的更新
  5. 纯代码实现 Android(安卓)登陆布局.
  6. 拍照-----------android系统 至关重要的功能
  7. android 权限集合
  8. Android(安卓)Wi-Fi Firmware(wcnss)修改方法(以QCOM为平台)
  9. android 样式选择器

随机推荐

  1. windows和linux下android sdk通用
  2. Android 性能优化之使用MAT分析内存泄露
  3. 【Android】学习笔记(9)——SQLite简单使
  4. 2012版辅助开发工具包(ADT)新功能特性介绍
  5. Mac下用Charles实现Android(安卓)http和h
  6. Android 内存优化
  7. android sql
  8. 【Android】 从头搭建视频播放器(1)——概
  9. osg for android (一) 简单几何物体的加
  10. Android(安卓)源码分析之旅3.1--消息机制