package com.android.pc.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.HashMap; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.util.Base64; import com.android.pc.ioc.app.Ioc; public class Handler_SharedPreferences { public static final int STRING = 0; public static final int INT = 1; public static final int BOOLEAN = 2; public static void WriteSharedPreferences(String dataBasesName, ThreeMap map) { if (map == null) { return; } SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); Editor editor = user.edit(); map.addValueInEditor(editor); editor.commit(); } public static void ClearSharedPreferences(String dataBasesName) { SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); Editor editor = user.edit(); editor.clear(); editor.commit(); } public static void removeSharedPreferences(String dataBasesName, String key) { SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); Editor editor = user.edit(); editor.remove(key); editor.commit(); } public static SharedPreferences ReadSharedPreferences(String dataBasesName) { SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); return user; } @SuppressWarnings("unchecked") public static HashMap<String, Object> getAllByBasesName(String dataBasesName) { SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); HashMap<String, Object> map = (HashMap<String, Object>) user.getAll(); return map; } public static <T> T getValueByName(String dataBasesName, String key, int type) { SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); Object value = null; switch (type) { case STRING: value = user.getString(key, ""); break; case INT: value = user.getInt(key, 0); break; case BOOLEAN: value = user.getBoolean(key, false); break; } return (T) value; } public static void WriteSharedPreferences(String dataBasesName, String name, Object value) { if (name == null || value == null) { return; } SharedPreferences user = Ioc.getIoc().getApplication().getSharedPreferences(dataBasesName, 0); Editor editor = user.edit(); if (value instanceof Integer) { editor.putInt(name, Integer.parseInt(value.toString())); } else if (value instanceof Long) { editor.putLong(name, Long.parseLong(value.toString())); } else if (value instanceof Boolean) { editor.putBoolean(name, Boolean.parseBoolean(value.toString())); } else if (value instanceof String) { editor.putString(name, value.toString()); } else if (value instanceof Float) { editor.putFloat(name, Float.parseFloat(value.toString())); } editor.commit(); } public static void saveObject(String data, String key, Object object) { SharedPreferences preferences = Ioc.getIoc().getApplication().getSharedPreferences(data, Context.MODE_PRIVATE); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(object); String oAuth_Base64 = new String(Base64.encode(baos.toByteArray(), Base64.DEFAULT)); Editor editor = preferences.edit(); editor.putString(key, oAuth_Base64); editor.commit(); } catch (IOException e) { e.printStackTrace(); } } public static <T> T readObject(String data, String key) { SharedPreferences preferences = Ioc.getIoc().getApplication().getSharedPreferences(data, Context.MODE_PRIVATE); return readObject(preferences, key); } public static <T> T readObject(SharedPreferences preferences, String key) { Object object = null; String string = preferences.getString(key, ""); if (string == "") { return null; } byte[] base64 = Base64.decode(string.getBytes(), Base64.DEFAULT); ByteArrayInputStream bais = new ByteArrayInputStream(base64); try { ObjectInputStream bis = new ObjectInputStream(bais); object = bis.readObject(); } catch (Exception e) { e.printStackTrace(); } return (T) object; } public static <T> HashMap<String, T> readObject(String data) { SharedPreferences preferences = Ioc.getIoc().getApplication().getSharedPreferences(data, Context.MODE_PRIVATE); return readObject(preferences); } public static <T> HashMap<String, T> readObject(SharedPreferences preferences) { Object object = null; HashMap<String, Object> map = (HashMap<String, Object>) preferences.getAll(); HashMap<String, T> datas = new HashMap<String, T>(); for (String key : map.keySet()) { byte[] base64 = Base64.decode(((String) map.get(key)).getBytes(), Base64.DEFAULT); ByteArrayInputStream bais = new ByteArrayInputStream(base64); try { ObjectInputStream bis = new ObjectInputStream(bais); object = bis.readObject(); datas.put(key, (T) object); } catch (Exception e) { e.printStackTrace(); } } return datas; } }