SharedPreferences工具类
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class SpUtils {
/**
* 获取SharedPreferences
*
* @param context
* @return
*/
public static SharedPreferences getSharedPreference(Context context) {
if (context != null) {
SharedPreferences sp = context.getSharedPreferences(“Demo”,
Context.MODE_PRIVATE);
return sp;
} else {
return null;
}
}
/**
* 移除某个key值已经对应的值
*
* @param context
* @param key
*/
public static void remove(Context context, String key) {
if (context != null) {
SharedPreferences sp = getSharedPreference(context);
SharedPreferences.Editor editor = sp.edit();
editor.remove(key);
SharedPreferencesCompat.apply(editor);
}
}
/**
* 从sp获取boolean值
*
* @param context
* @param key
* @return
*/
public static boolean getBoolean(Context context, String key) {
SharedPreferences sp = getSharedPreference(context);
boolean flag = sp.getBoolean(key, true);
return flag;
}
public static String getString(Context context, String key) {
SharedPreferences sp = getSharedPreference(context);
String str = sp.getString(key, null);
return str;
}
/**
* 从sp获取int值
*
* @param context
* @param key
* @return
*/
public static int getInt(Context context, String key) {
if (context != null) {
SharedPreferences sp = getSharedPreference(context);
int result = sp.getInt(key, 0);
return result;
} else {
return 0;
}
}
/**
* 存储数据到SharedPreferences中,仅限于String,Integer,Boolean三种数据类型
*
* @param context
* @param key
* @param value
*/
public static void put(Context context, String key, Object value) {
if (context != null) {
SharedPreferences sp = getSharedPreference(context);
Editor editor = sp.edit();
if (value instanceof String) {
editor.putString(key, (String) value);
} else if (value instanceof Integer) {
editor.putInt(key, (Integer) value);
} else if (value instanceof Boolean) {
editor.putBoolean(key, (Boolean) value);
}
editor.commit();
}
}
/**
* 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
*
* @author zhy
*
*/
private static class SharedPreferencesCompat {
private static final Method sApplyMethod = findApplyMethod();
/**
* 反射查找apply的方法
*
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
private static Method findApplyMethod() {
try {
Class clz = SharedPreferences.Editor.class;
return clz.getMethod("apply");
} catch (NoSuchMethodException e) {
}
return null;
}
/**
* 如果找到则使用apply执行,否则使用commit
*
* @param editor
*/
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();
}
}
}