SharedPreferences使用示例:
SharedPreferences也是使用xml文件, 然后類似于Map集合,使用鍵-值的形式來存儲數據;我們只需要調用SharedPreferences的getXxx(name), 就可以根據鍵獲得對應的值
1.定義一個SP的類
2.定義保存的方法
3.定義讀取方法
4.在activity中調用
?
讀取其他應用的SharedPreferences
?獲得其他app的Context,而這個Context代表訪問該app的全局信息的接口,而決定應用的唯一標識 是應用的包名,所以我們可以通過應用包名獲得對應app的Context 另外有一點要注意的是:其他應用的SP文件是否能被讀寫的前提就是SP文件是否指定了可讀或者 可寫的權限,我們上面創建的是MODE_PRIVATE的就不可以了~所以說你像讀別人的SP里的數據, 很難,另外,一些關鍵的信息,比如密碼保存到SP里,一般都是會做加密的
?
但是如何實現:
1.根據應用的包名創建其他應用對應的Context
2.根據Context獲得對應的SP
3.調用對應的方法
//獲得第一個應用的包名,從而獲得對應的Context,需要對異常進行捕獲
try {
othercontext = createPackageContext("com.jay.sharedpreferencedemo", Context.CONTEXT_IGNORE_SECURITY);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//根據Context取得對應的SharedPreferences
sp = othercontext.getSharedPreferences("mysp", Context.MODE_WORLD_READABLE);
使用MD5對SharedPreference的重要數據進行加密
?
Step 1
.用戶注冊賬號密碼,賬號密碼校驗后(賬號是否重復,密碼位數 > 6位等), 即賬號密碼有效,注冊成功后,我們提交給服務器的賬號,以及本地加密過的密碼!
Step 2
.服務器端將用戶提交的賬號,加密過的密碼保存到服務端的數據庫中,也就是服務 端并不會保存我們的明文密碼(原始)密碼!
Step 3
.說回客戶端,如果注冊成功或者登陸成功,你想保存賬號密碼到SP中,保存的的密碼 也需要走一趟加密流程!即明文密碼——>加密,再保存!如果不保存,每次請求的時候,明文密碼 也要走一趟家里流程,然后拿著加密后的密碼來請求服務器!
Step 4
.服務器驗證賬號以及加密密碼,成功,分配客戶端一個session標識,后續客戶端可以拿著 這個session來訪問服務端提供的相關服務!
?
MD5簡單介紹:
簡單點說就是一種加密算法,可以將一個字符串,或者文件,壓縮包,執行MD5加密后, 就可以生產一個固定長度為128bit的串!這個串基本唯一!另外我們都知道:一個十六進制 需要用4個bit來表示,那么對應的MD5的字符串長度就為:128 / 4 = 32位了!另外可能 你看到一些md5是16位的,只是將32位MD5碼去掉了前八位以及后八位!
MD5不可逆、不唯一,一個原始數據只對應一個MD5值,但是一個MD5值可能對應多個原始數據!
?
public class MD5 {
public static String getMD5(String content) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(content.getBytes());
return getHashString(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
private static String getHashString(MessageDigest digest) {
StringBuilder builder = new StringBuilder();
for (byte b : digest.digest()) {
builder.append(Integer.toHexString((b >> 4) & 0xf));
builder.append(Integer.toHexString(b & 0xf));
}
return builder.toString();
}
}