Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中 記住密碼(SharedPreferences)

Android中 記住密碼(SharedPreferences)

編輯:關於Android編程

Android中登錄界面的記住密碼功能實現,將用戶輸入的賬號和密碼以SharedPreferences方式存儲(注意的是,密碼要用MD5明文加密)。

 

界面xml文件:

 


\

 

 

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文件裡的數據:

\

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved