package com.diandi.demo.util;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.preference.PreferenceManager;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* *******************************************************************************
* ********* Author : klob(kloblic@gmail.com) .
* ********* Date : 2014-11-29 .
* ********* Time : 11:46 .
* ********* Project name : Diandi1.18 .
* ********* Version : 1.0
* ********* Copyright @ 2014, klob, All Rights Reserved
* *******************************************************************************
*/
public class Sputil {
private Context context;
private SharedPreferences sp = null;
private Editor edit = null;
/**
* 创建默认sp
*
* @param context
*/
public Sputil(Context context) {
this(context, PreferenceManager.getDefaultSharedPreferences(context));
}
/**
* 通过文件名创建sp
*
* @param context
* @param filename
*/
public Sputil(Context context, String filename) {
this(context, context.getSharedPreferences(filename,
Context.MODE_WORLD_WRITEABLE));
}
/**
* 通过sp创建sp
*
* @param context
* @param sp
*/
public Sputil(Context context, SharedPreferences sp) {
this.context = context;
this.sp = sp;
edit = sp.edit();
}
/**
* 记录日期,决定是否数据是否需要改动
*
* @return
*/
public static String getDateByNumber() {
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd",
new Locale("zh"));
String cur = s.format(new Date());
return cur;
}
// Set
public SharedPreferences getInstance() {
return sp;
}
// Boolean
public void setValue(String key, boolean value) {
edit.putBoolean(key, value);
edit.commit();
}
public void setValue(int resKey, boolean value) {
setValue(this.context.getString(resKey), value);
}
// Float
public void setValue(String key, float value) {
edit.putFloat(key, value);
edit.commit();
}
public void setValue(int resKey, float value) {
setValue(this.context.getString(resKey), value);
}
// Integer
public void setValue(String key, int value) {
edit.putInt(key, value);
edit.commit();
}
public void setValue(int resKey, int value) {
setValue(this.context.getString(resKey), value);
}
// Long
public void setValue(String key, long value) {
edit.putLong(key, value);
edit.commit();
}
public void setValue(int resKey, long value) {
setValue(this.context.getString(resKey), value);
}
// String
public void setValue(String key, String value) {
edit.putString(key, value);
edit.commit();
}
// Get
public void setValue(int resKey, String value) {
setValue(this.context.getString(resKey), value);
}
// Boolean
public boolean getValue(String key, boolean defaultValue) {
return sp.getBoolean(key, defaultValue);
}
public boolean getValue(int resKey, boolean defaultValue) {
return getValue(this.context.getString(resKey), defaultValue);
}
// Float
public float getValue(String key, float defaultValue) {
return sp.getFloat(key, defaultValue);
}
public float getValue(int resKey, float defaultValue) {
return getValue(this.context.getString(resKey), defaultValue);
}
// Integer
public int getValue(String key, int defaultValue) {
return sp.getInt(key, defaultValue);
}
public int getValue(int resKey, int defaultValue) {
return getValue(this.context.getString(resKey), defaultValue);
}
// Long
public long getValue(String key, long defaultValue) {
return sp.getLong(key, defaultValue);
}
public long getValue(int resKey, long defaultValue) {
return getValue(this.context.getString(resKey), defaultValue);
}
// String
public String getValue(String key, String defaultValue) {
return sp.getString(key, defaultValue);
}
public String getValue(int resKey, String defaultValue) {
return getValue(this.context.getString(resKey), defaultValue);
}
// Delete
public void remove(String key) {
edit.remove(key);
edit.commit();
}
public void clear() {
edit.clear();
edit.commit();
}
/**
* 是否第一次启动应用
*
* @param context
* @return
*/
public boolean isFirstStart(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0);
int curVersion = info.versionCode;
int lastVersion = sp.getInt("version", 0);
if (curVersion > lastVersion) {
// 如果当前版本大于上次版本,该版本属于第一次启动
// 将当前版本写入preference中,则下次启动的时候,据此判断,不再为首次启动
return true;
} else {
return false;
}
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
/**
* 是否第一次安装应用
*
* @param context
* @return
*/
public boolean isFirstInstall(Context context) {
int install = sp.getInt("first_install", 0);
if (install == 0)
return true;
return false;
}
/**
* 应用已启动
*
* @param context
*/
public void setStarted(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0);
int curVersion = info.versionCode;
sp.edit().putInt("version", curVersion).commit();
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 应用已安装并启动
*
* @param context
*/
public void setInstalled(Context context) {
sp.edit().putInt("first_install", 1).commit();
}
/**
* 是否需要改变数据
*
* @param context
* @param openID
* @return
*/
public boolean needChangeIndexContent(Context context, String openID) {
String save = sp.getString(openID, "");
String cur = getDateByNumber();
if (save.equals(cur)) {
// be the last statement in the method
return false;
}
return true;
}
/**
* 保存更新日期
*
* @param context
* @param openID
*/
public void saveChangeIndexContent(Context context, String openID) {
String cur = getDateByNumber();
sp.edit().putString(openID, cur).commit();
}
}