Android:SharedPreferences操作工具類
阿新 • • 發佈:2019-02-11
package com.example.customlib.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Map; import android.content.Context; import android.content.SharedPreferences; /** * @Description: SharedPreferences工具類 * @ClassName: SharedPreferencesUtils * @Version: V1.0 * @Date: 2015-4-1 上午9:44:30 */ public class SharedPreferencesUtils { /** 儲存在手機裡面的檔名 */ public static final String FILE_NAME = "share_data"; /** * @Description: 儲存資料的方法,我們需要拿到儲存資料的具體型別,然後根據型別呼叫不同的儲存方法 * @Title: put * @param context * @param key * @param object * @ReturnType: void * @Version: V1.0 * @Date: 2015-4-1 上午9:38:45 */ public static void put(Context context, String key, Object object) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); if (object instanceof String) { editor.putString(key, (String) object); } else if (object instanceof Integer) { editor.putInt(key, (Integer) object); } else if (object instanceof Boolean) { editor.putBoolean(key, (Boolean) object); } else if (object instanceof Float) { editor.putFloat(key, (Float) object); } else if (object instanceof Long) { editor.putLong(key, (Long) object); } else { editor.putString(key, object.toString()); } SharedPreferencesCompat.apply(editor); } /** * @Description: 得到儲存資料的方法,我們根據預設值得到儲存的資料的具體型別,然後呼叫相對於的方法獲取值 * @Title: get * @param context * @param key * @param defaultObject * @return * @ReturnType: Object * @Version: V1.0 * @Date: 2015-4-1 上午9:39:06 */ public static Object get(Context context, String key, Object defaultObject) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); if (defaultObject instanceof String) { return sp.getString(key, (String) defaultObject); } else if (defaultObject instanceof Integer) { return sp.getInt(key, (Integer) defaultObject); } else if (defaultObject instanceof Boolean) { return sp.getBoolean(key, (Boolean) defaultObject); } else if (defaultObject instanceof Float) { return sp.getFloat(key, (Float) defaultObject); } else if (defaultObject instanceof Long) { return sp.getLong(key, (Long) defaultObject); } return null; } /** * @Description: 移除某個key值已經對應的值 * @Title: remove * @param context * @param key * @ReturnType: void * @Version: V1.0 * @Date: 2015-4-1 上午9:39:14 */ public static void remove(Context context, String key) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.remove(key); SharedPreferencesCompat.apply(editor); } /** * @Description: 清除所有資料 * @Title: clear * @param context * @ReturnType: void * @Version: V1.0 * @Date: 2015-4-1 上午9:39:26 */ public static void clear(Context context) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.clear(); SharedPreferencesCompat.apply(editor); } /** * @Description: 查詢某個key是否已經存在 * @Title: contains * @param context * @param key * @return * @ReturnType: boolean * @Version: V1.0 * @Date: 2015-4-1 上午9:39:34 */ public static boolean contains(Context context, String key) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); return sp.contains(key); } /** * @Description: 返回所有的鍵值對 * @Title: getAll * @param context * @return * @ReturnType: Map<String,?> * @Version: V1.0 * @Date: 2015-4-1 上午9:39:42 */ public static Map<String, ?> getAll(Context context) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); return sp.getAll(); } /** * @Description: 建立一個解決SharedPreferencesCompat.apply方法的一個相容類 * @ClassName: SharedPreferencesCompat * @Version: V1.0 * @Date: 2015-4-1 上午9:39:50 */ private static class SharedPreferencesCompat { private static final Method sApplyMethod = findApplyMethod(); /** * @Description: 反射查詢apply的方法 * @Title: findApplyMethod * @return * @ReturnType: Method * @Version: V1.0 * @Date: 2015-4-1 上午9:39:57 */ @SuppressWarnings({ "unchecked", "rawtypes" }) private static Method findApplyMethod() { try { Class clz = SharedPreferences.Editor.class; return clz.getMethod("apply"); } catch (NoSuchMethodException e) { } return null; } /** * @Description: 如果找到則使用apply執行,否則使用commit * @Title: apply * @param editor * @ReturnType: void * @Version: V1.0 * @Date: 2015-4-1 上午9:40:08 */ public static void apply(SharedPreferences.Editor editor) { try { if (sApplyMethod != null) { sApplyMethod.invoke(editor); return; } } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } editor.commit(); } } }