package com.mzeat; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; import com.mzeat.model.AccessInfo; import com.mzeat.util.StringUtils; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; /** * 应用程序配置类:用于保存用户相关信息及设置 * @author liux (http://my.oschina.net/liux) * @version 1.0 * @created 2012-3-21 */ public class AppConfig{ private final static String APP_CONFIG = "config"; public final static String TEMP_TWEET = "temp_tweet"; public final static String TEMP_TWEET_IMAGE = "temp_tweet_image"; public final static String TEMP_MESSAGE = "temp_message"; public final static String TEMP_COMMENT = "temp_comment"; public final static String TEMP_POST_TITLE = "temp_post_title"; public final static String TEMP_POST_CATALOG = "temp_post_catalog"; public final static String TEMP_POST_CONTENT = "temp_post_content"; public final static String CONF_APP_UNIQUEID = "APP_UNIQUEID"; public final static String CONF_COOKIE = "cookie"; public final static String CONF_ACCESSTOKEN = "accessToken"; public final static String CONF_ACCESSSECRET = "accessSecret"; public final static String CONF_EXPIRESIN = "expiresIn"; public final static String CONF_LOAD_IMAGE = "perf_loadimage"; public final static String CONF_SCROLL = "perf_scroll"; public final static String CONF_HTTPS_LOGIN = "perf_httpslogin"; public final static String CONF_VOICE = "perf_voice"; public final static String CONF_CHECKUP = "perf_checkup"; private Context mContext; private AccessInfo accessInfo = null; private static AppConfig appConfig; public static AppConfig getAppConfig(Context context) { if(appConfig == null){ appConfig = new AppConfig(); appConfig.mContext = context; } return appConfig; } /** * 获取Preference设置 */ public static SharedPreferences getSharedPreferences(Context context) { return PreferenceManager.getDefaultSharedPreferences(context); } /** * 是否加载显示文章图片 */ public static boolean isLoadImage(Context context) { return getSharedPreferences(context) .getBoolean(CONF_LOAD_IMAGE, true); } public String getCookie(){ return get(CONF_COOKIE); } public void setAccessToken(String accessToken){ set(CONF_ACCESSTOKEN, accessToken); } public String getAccessToken(){ return get(CONF_ACCESSTOKEN); } public void setAccessSecret(String accessSecret){ set(CONF_ACCESSSECRET, accessSecret); } public String getAccessSecret(){ return get(CONF_ACCESSSECRET); } public void setExpiresIn(long expiresIn){ set(CONF_EXPIRESIN, String.valueOf(expiresIn)); } public long getExpiresIn(){ return StringUtils.toLong(get(CONF_EXPIRESIN)); } public void setAccessInfo(String accessToken, String accessSecret, long expiresIn) { if(accessInfo == null) accessInfo = new AccessInfo(); accessInfo.setAccessToken(accessToken); accessInfo.setAccessSecret(accessSecret); accessInfo.setExpiresIn(expiresIn); //保存到配置 this.setAccessToken(accessToken); this.setAccessSecret(accessSecret); this.setExpiresIn(expiresIn); } public AccessInfo getAccessInfo() { if(accessInfo == null && !StringUtils.isEmpty(getAccessToken()) && !StringUtils.isEmpty(getAccessSecret())) { accessInfo = new AccessInfo(); accessInfo.setAccessToken(getAccessToken()); accessInfo.setAccessSecret(getAccessSecret()); accessInfo.setExpiresIn(getExpiresIn()); } return accessInfo; } public String get(String key) { Properties props = get(); return (props!=null)?props.getProperty(key):null; } public Properties get() { FileInputStream fis = null; Properties props = new Properties(); try{ //读取files目录下的config //fis = activity.openFileInput(APP_CONFIG); //读取app_config目录下的config File dirConf = mContext.getDir(APP_CONFIG, Context.MODE_PRIVATE); fis = new FileInputStream(dirConf.getPath() + File.separator + APP_CONFIG); props.load(fis); }catch(Exception e){ }finally{ try { fis.close(); } catch (Exception e) {} } return props; } private void setProps(Properties p) { FileOutputStream fos = null; try{ //把config建在files目录下 //fos = activity.openFileOutput(APP_CONFIG, Context.MODE_PRIVATE); //把config建在(自定义)app_config的目录下 File dirConf = mContext.getDir(APP_CONFIG, Context.MODE_PRIVATE); File conf = new File(dirConf, APP_CONFIG); fos = new FileOutputStream(conf); p.store(fos, null); fos.flush(); }catch(Exception e){ e.printStackTrace(); }finally{ try { fos.close(); } catch (Exception e) {} } } public void set(Properties ps) { Properties props = get(); props.putAll(ps); setProps(props); } public void set(String key,String value) { Properties props = get(); props.setProperty(key, value); setProps(props); } public void remove(String...key) { Properties props = get(); for(String k : key) props.remove(k); setProps(props); } }