package net.oschina.gitapp;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import net.oschina.gitapp.common.Contanst;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.preference.PreferenceManager;
/**
* 应用程序配置类:用于保存用户相关信息及设置
*
* @author 火蚁 (http://my.oschina.net/LittleDY)
* @version 1.0
* @created 2014-04-21
*/
public class AppConfig {
private final static String APP_CONFIG = "config";
public final static String CONF_APP_UNIQUEID = "APP_UNIQUEID";
public final static String CONF_LOAD_IMAGE = "perf_loadimage";
public final static String CONF_HTTPS_LOGIN = "perf_httpslogin";
public final static String CONF_RECEIVENOTICE = "perf_receivenotice";
public final static String CONF_VOICE = "perf_voice";
public final static String CONF_CHECKUP = "perf_checkup";
public final static String CONF_FRIST_START = "isFristStart";
//默认存放图片的路径
public final static String DEFAULT_SAVE_IMAGE_PATH = Environment
.getExternalStorageDirectory()
+ File.separator
+ "OSChina"
+ File.separator
+ "git"
+ File.separator;
//默认存放文件的路径
public final static String DEFAULT_SAVE_FILE_PATH = Environment
.getExternalStorageDirectory()
+ File.separator
+ "OSChina"
+ File.separator
+ "git"
+ File.separator
+ "download"
+ File.separator;
private Context mContext;
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);
}
/**
* 获得用户的token
*
* @return
*/
public String getPrivateToken() {
return get(Contanst.PROP_KEY_PRIVATE_TOKEN);
}
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);
}
}