package com.hdl.sdk.common.utils; import android.content.Context; import android.content.SharedPreferences; import android.util.Base64; import com.hdl.sdk.common.HDLSdk; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Collections; import java.util.Map; import java.util.Set; /** * Created by Tong on 2021/9/28. */ public class SPUtils { private static final String APP_PREFERENCES_KEY = "profile"; private static final SharedPreferences PREFERENCES = HDLSdk.getInstance().getContext().getApplicationContext().getSharedPreferences(APP_PREFERENCES_KEY, Context.MODE_PRIVATE); private static SharedPreferences getAppPreference() { return PREFERENCES; } //======通用存储======== public static void put(final String key, final String value) { getAppPreference().edit().putString(key, value).apply(); } public static String getString(final String key) { return getString(key, ""); } public static String getString(final String key, final String defaultValue) { return getAppPreference().getString(key, defaultValue); } public static void put(final String key, final int value) { put(key, value, false); } public static void put(final String key, final int value, final boolean isCommit) { getAppPreference().edit().putInt(key, value).apply(); } public static int getInt(final String key) { return getInt(key, -1); } public static int getInt(final String key, final int defaultValue) { return getAppPreference().getInt(key, defaultValue); } public static void put(final String key, final long value) { getAppPreference().edit().putLong(key, value).apply(); } public static long getLong(final String key) { return getLong(key, -1L); } public static long getLong(final String key, final long defaultValue) { return getAppPreference().getLong(key, defaultValue); } public static void put(final String key, final float value) { getAppPreference().edit().putFloat(key, value).apply(); } public static float getFloat(final String key) { return getFloat(key, -1f); } public static float getFloat(final String key, final float defaultValue) { return getAppPreference().getFloat(key, defaultValue); } public static void put(final String key, final boolean value) { getAppPreference().edit().putBoolean(key, value).apply(); } public static boolean getBoolean(final String key) { return getBoolean(key, false); } public static boolean getBoolean(final String key, final boolean defaultValue) { return getAppPreference().getBoolean(key, defaultValue); } public static void put(final String key, final Set value ) { getAppPreference().edit().putStringSet(key, value).apply(); } public static Set getStringSet(final String key) { return getStringSet(key, Collections.emptySet()); } public static Set getStringSet(final String key, final Set defaultValue) { return getAppPreference().getStringSet(key, defaultValue); } public static Map getAll() { return getAppPreference().getAll(); } public static boolean contains(final String key) { return getAppPreference().contains(key); } public static void remove(final String key) { getAppPreference().edit().remove(key).apply(); } public static void clear() { getAppPreference() .edit() .clear() .apply(); } private static String Object2String(Object object) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = null; try { objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream.writeObject(object); String string = new String(Base64.encode(byteArrayOutputStream.toByteArray(), Base64.DEFAULT)); objectOutputStream.close(); return string; } catch (IOException e) { e.printStackTrace(); return null; } } private static Object String2Object(String objectString) { byte[] mobileBytes = Base64.decode(objectString.getBytes(), Base64.DEFAULT); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(mobileBytes); ObjectInputStream objectInputStream = null; try { objectInputStream = new ObjectInputStream(byteArrayInputStream); Object object = objectInputStream.readObject(); objectInputStream.close(); return object; } catch (Exception e) { e.printStackTrace(); return null; } } public static void saveSerializableEntity(String key, Object saveObject) { SharedPreferences.Editor editor = getAppPreference().edit(); String string = Object2String(saveObject); editor.putString(key, string); editor.commit(); } public static Object getSerializableEntity(String key) { String string = getAppPreference().getString(key, null); if (string != null) { Object object = String2Object(string); return object; } else { return null; } } }