package com.auto.lyric.util; import android.content.Context; import android.content.SharedPreferences; import androidx.collection.ArraySet; import java.util.Set; /** * Created by Administrator on 2021/10/28 0028. */ public class SpUtils { static SpUtils instance; /** * 获取SP实例 * * @return {@link SpUtils} */ public static SpUtils getInstance() { if(instance == null){ instance = new SpUtils(); } return instance; } public final static String PROJECT = "project"; public final static String USER = "user"; public boolean clearData(Context context, String keyShared){ SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); return settings.edit().clear().commit(); } public boolean clearData(Context context, String key, String keyShared){ putString(context,key,null,keyShared); return true; } /** * remove key preferences * * @param context * @param key The name of the preference to modify * @return True if the new values were successfully written to persistent storage. */ public void removeKey(Context context, String key, String keyShared){ SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.remove(key); } /** * remove value preferences * * @param context * @param value The name of the preference to modify * @return True if the new values were successfully written to persistent storage. */ public void removeValue(Context context, String value, String keyShared){ SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.remove(value); } /** * put string preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public boolean putString(Context context, String key, String value, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putString(key, value); return editor.commit(); } /** * get string preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or null. Throws ClassCastException if there is a preference with this * name that is not a string * @see #getString(Context, String, String) */ public String getString(Context context, String key, String keyShared) { return getString(context, key, null,keyShared); } /** * get string preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a string */ public String getString(Context context, String key, String defaultValue, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); return settings.getString(key, defaultValue); } /** * put int preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public boolean putInt(Context context, String key, int value, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putInt(key, value); return editor.commit(); } /** * get int preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this * name that is not a int */ public int getInt(Context context, String key, String keyShared) { return getInt(context, key, -1,keyShared); } /** * get int preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a int */ public int getInt(Context context, String key, int defaultValue, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); try { return settings.getInt(key, defaultValue); }catch (ClassCastException e){ try { return Integer.parseInt(settings.getString(key,defaultValue+"")); }catch (NumberFormatException en){ return defaultValue; } } } /** * put long preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public boolean putLong(Context context, String key, long value, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putLong(key, value); return editor.commit(); } /** * get long preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this * name that is not a long */ public long getLong(Context context, String key, String keyShared) { return getLong(context, key, -1,keyShared); } /** * get long preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a long */ public long getLong(Context context, String key, long defaultValue, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); try { return settings.getLong(key, defaultValue); }catch (ClassCastException e){ try { return Long.parseLong(settings.getString(key,defaultValue+"")); }catch (NumberFormatException en){ return defaultValue; } } } /** * put float preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public boolean putFloat(Context context, String key, float value, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putFloat(key, value); return editor.commit(); } /** * get float preferences * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or -1. Throws ClassCastException if there is a preference with this * name that is not a float */ public float getFloat(Context context, String key, String keyShared) { return getFloat(context, key, -1,keyShared); } /** * get float preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a float */ public float getFloat(Context context, String key, float defaultValue, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); try { return settings.getFloat(key, defaultValue); }catch (ClassCastException e){ try { return Float.parseFloat(settings.getString(key,defaultValue+"")); }catch (NumberFormatException en){ return defaultValue; } } } /** * put boolean preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference * @return True if the new values were successfully written to persistent storage. */ public boolean putBoolean(Context context, String key, boolean value, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean(key, value); return editor.commit(); } /** * get boolean preferences, default is false * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or false. Throws ClassCastException if there is a preference with this * name that is not a boolean */ public boolean getBoolean(Context context, String key, String keyShared) { return getBoolean(context, key, false,keyShared); } /** * get boolean preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a boolean */ public boolean getBoolean(Context context, String key, boolean defaultValue, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); try { return settings.getBoolean(key, defaultValue); }catch (ClassCastException e){ try { return Boolean.parseBoolean(settings.getString(key,defaultValue+"")); }catch (NumberFormatException en){ return defaultValue; } } } /** * put boolean preferences * * @param context * @param key The name of the preference to modify * @param value The new value for the preference , the value of set ,canot be the other class out of java collection * @return True if the new values were successfully written to persistent storage. */ public boolean putStringSet(Context context, String key, Set value, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putStringSet(key, value); return editor.commit(); } /** * get boolean preferences, default is false * * @param context * @param key The name of the preference to retrieve * @return The preference value if it exists, or false. Throws ClassCastException if there is a preference with this * name that is not a boolean 获取出来的值最终被转换为hashset类型 */ public Set getStringSet(Context context, String key, String keyShared) { return getStringSet(context, key,new ArraySet(),keyShared); } /** * get boolean preferences * * @param context * @param key The name of the preference to retrieve * @param defaultValue Value to return if this preference does not exist * @return The preference value if it exists, or defValue. Throws ClassCastException if there is a preference with * this name that is not a boolean 获取出来的值最终被转换为hashset类型 */ public Set getStringSet(Context context, String key, Set defaultValue, String keyShared) { SharedPreferences settings = context.getSharedPreferences(keyShared, Context.MODE_PRIVATE); return settings.getStringSet(key, defaultValue); } public boolean getBooleanValOfUser(Context context, String key){ return getBoolean(context,key,false,USER); } public boolean getBooleanValOfProject(Context context, String key){ return getBoolean(context,key,false,PROJECT); } public String getStringValOfUser(Context context, String key){ return getString(context,key,"",USER); } public String getStringValOfProject(Context context, String key){ return getString(context,key,"",PROJECT); } public int getIntValOfProject(Context context, String key){ return getInt(context,key,0,PROJECT); } public Long getLongValOfProject(Context context, String key){ return getLong(context,key,0,PROJECT); } public float getFloatValOfProject(Context context, String key){ return getFloat(context,key,0,PROJECT); } public Set getStringSetValOfProject(Context context, String key){ return getStringSet(context,key,PROJECT); } public int getIntValOfUser(Context context, String key){ return getInt(context,key,0,USER); } public Long getLongValOfUser(Context context, String key){ return getLong(context,key,0,USER); } public float getFloatValOfUser(Context context, String key){ return getFloat(context,key,0,USER); } public Set getStringSetValOfUser(Context context, String key){ return getStringSet(context,key,USER); } public void putBooleanValOfUser(Context context, String key ,Boolean value){ putBoolean(context,key,value,USER); } public void putBooleanValOfProject(Context context, String key,Boolean value){ putBoolean(context,key,value,PROJECT); } public void putStringValOfUser(Context context,String key,String value){ putString(context,key,value,USER); } public void putStringValOfProject(Context context,String key,String value){ putString(context,key,value,PROJECT); } public void putIntValOfProject(Context context,String key,int value){ putInt(context,key,value,PROJECT); } public void putLongValOfProject(Context context,String key,long value){ putLong(context,key,value,PROJECT); } public void putFloatValOfProject(Context context,String key,float value){ putFloat(context,key,value,PROJECT); } public void putStringSetValOfProject(Context context,String key,Set value){ putStringSet(context,key,value,PROJECT); } public void putIntValOfUser(Context context,String key,int value){ putInt(context,key,value,USER); } public void putLongValOfUser(Context context,String key,long value){ putLong(context,key,value,USER); } public void putFloatValOfUser(Context context,String key,float value){ putFloat(context,key,value,USER); } public void putStringSetValOfUser(Context context,String key, Set value){ putStringSet(context,key,value,USER); } public void removeUserKey(Context context, String key){ removeKey(context,key,USER); } public void removeProjectKey(Context context, String key){ removeKey(context,key,PROJECT); } public void removeUserValue(Context context, String Value){ removeValue(context,Value,USER); } public void removeProjectValue(Context context, String Value){ removeValue(context,Value,PROJECT); } public void clearProjectData(Context context){ clearData(context,PROJECT); } public void clearUserData(Context context){ clearData(context,USER); } }