android sp文件的使用,Android 常用工具类之SPUtil,可以修改默认sp文件的路径

importandroid.app.Activity;importandroid.content.Context;importandroid.content.ContextWrapper;importandroid.content.SharedPreferences;importcom.imageviewpager.language.MyApplication;importjava.io.File;importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.Map;public classSPUtil {/**debug 环境下允许修改 sp文件的路径*/

public static final boolean isDebug = true;/**修改以后的sp文件的路径 MyApplication.getContext().getExternalFilesDir(null).getAbsolutePath()=/sdcard/Android/%package_name%/file*/

public static final String FILE_PATH = MyApplication.getContext().getExternalFilesDir(null).getAbsolutePath();/*** 保存数据

*

*@paramcontext

*@paramfileName 文件名, 不需要".xml"

*@paramkeyName

*@paramvalue*/

public static voidput(Context context, String fileName, String keyName, Object value) {

SharedPreferences.Editor editor=getSharedPreferences(context, fileName).edit();if (value instanceofString) {

editor.putString(keyName, (String) value);

}else if (value instanceofInteger) {

editor.putInt(keyName, (Integer) value);

}else if (value instanceofBoolean) {

editor.putBoolean(keyName, (Boolean) value);

}else if (value instanceofFloat) {

editor.putFloat(keyName, (Float) value);

}else if (value instanceofLong) {

editor.putLong(keyName, (Long) value);

}else{

editor.putString(keyName, value.toString());

}

SharedPreferencesCompat.apply(editor);

}/*** 获取数据

*

*@paramcontext

*@paramfileName

*@paramkeyName

*@paramdefaultValue 默认值

*@return

*/

public staticObject get(Context context, String fileName, String keyName, Object defaultValue) {

SharedPreferences sp=getSharedPreferences(context, fileName);if (defaultValue instanceofString) {returnsp.getString(keyName, (String) defaultValue);

}else if (defaultValue instanceofInteger) {returnsp.getInt(keyName, (Integer) defaultValue);

}else if (defaultValue instanceofBoolean) {returnsp.getBoolean(keyName, (Boolean) defaultValue);

}else if (defaultValue instanceofFloat) {returnsp.getFloat(keyName, (Float) defaultValue);

}else if (defaultValue instanceofLong) {returnsp.getLong(keyName, (Long) defaultValue);

}return null;

}/*** 移除某个key值对应的值

*

*@paramcontext

*@paramfileName

*@paramkeyName*/

public static voidremove(Context context, String fileName, String keyName) {

SharedPreferences.Editor editor=getSharedPreferences(context, fileName).edit();

editor.remove(keyName);

SharedPreferencesCompat.apply(editor);

}/**清除所有数据*/

public static voidclear(Context context, String fileName) {

SharedPreferences.Editor editor=getSharedPreferences(context, fileName).edit();

editor.clear();

SharedPreferencesCompat.apply(editor);

}/*** 查询某个key是否已经存在

*

*@paramcontext

*@paramkeyName

*@return

*/

public static booleancontains(Context context, String fileName, String keyName) {returngetSharedPreferences(context, fileName).contains(keyName);

}/**返回所有的键值对*/

public static MapgetAll(Context context, String fileName) {returngetSharedPreferences(context, fileName).getAll();

}/**创建一个解决SharedPreferencesCompat.apply方法的一个兼容类*/

private static classSharedPreferencesCompat {private static final Method sApplyMethod =findApplyMethod();/**反射查找apply的方法*/@SuppressWarnings({"unchecked", "rawtypes"})private staticMethod findApplyMethod() {try{

Class clz= SharedPreferences.Editor.class;return clz.getMethod("apply");

}catch(NoSuchMethodException e) {

}return null;

}/**如果找到则使用apply执行,否则使用commit*/

public static voidapply(SharedPreferences.Editor editor) {try{if (sApplyMethod != null) {

sApplyMethod.invoke(editor);return;

}

}catch(IllegalArgumentException e) {

}catch(IllegalAccessException e) {

}catch(InvocationTargetException e) {

}

editor.commit();

}

}/***@paramcontext

*@paramfileName

*@returnisDebug = 返回修改路径(路径不存在会自动创建)以后的 SharedPreferences :%FILE_PATH%/%fileName%.xml

* !isDebug = 返回默认路径下的 SharedPreferences : /data/data/%package_name%/shared_prefs/%fileName%.xml*/

private staticSharedPreferences getSharedPreferences(Context context, String fileName) {if(isDebug) {try{//获取ContextWrapper对象中的mBase变量。该变量保存了ContextImpl对象

Field field = ContextWrapper.class.getDeclaredField("mBase");

field.setAccessible(true);//获取mBase变量

Object obj =field.get(context);//获取ContextImpl。mPreferencesDir变量,该变量保存了数据文件的保存路径

field = obj.getClass().getDeclaredField("mPreferencesDir");

field.setAccessible(true);//创建自定义路径

File file = newFile(FILE_PATH);//修改mPreferencesDir变量的值

field.set(obj, file);//返回修改路径以后的 SharedPreferences :%FILE_PATH%/%fileName%.xml

returncontext.getSharedPreferences(fileName, Activity.MODE_PRIVATE);

}catch(NoSuchFieldException e) {

e.printStackTrace();

}catch(IllegalArgumentException e) {

e.printStackTrace();

}catch(IllegalAccessException e) {

e.printStackTrace();

}

}//返回默认路径下的 SharedPreferences : /data/data/%package_name%/shared_prefs/%fileName%.xml

returncontext.getSharedPreferences(fileName, Context.MODE_PRIVATE);

}

}

注意你的基带版本需要是MDC或者MDL一,准备材料:1,电脑安装Microsoft .NET Framework 4.5,点我2,下载三星驱动,点我3,下载解锁软件,点我下载4,下载安装DFS,点我下载5,全部安装好上面的软件在电脑6,MDC版本基带下载:点我下载二,降级基带为MDC版本1,下载odin:odin_V3.0.7.zip2,解压并且打开odin软件3,手机L720彻底关机(拔掉UIM卡,SIM卡)5,按住音量下+主页键+电源键进入警告的英文页面6,看到警告之后,按一下音量上键,进入了Downloading....下载模式,也就是挖煤模式或者说odin刷机模式。连上电脑数据线(台式电脑连后面的USB接口,网吧电脑一般被阉割了,是太监,不行)7,odin软件上点击PHONE,选择SPH-L720_MDC_Modem.tar.md5基带文件8,等待1分钟左右MD5验9,点击start,开始刷机三,破解电信插卡3G1,手机在拨号界面输入*#0808# (或者拨号##3424#),上面选择AP 下面选择MODEM+ADB+DM2,下载SPCUtility.apk 这个软件安装在手机3,手机连接WiFi或者网络,打开SPCUtility.apk这个软件,read 读取即可出SPC4,手机连接电脑数据线5,打开桌面的DFS软件6,连接三星端口7,输入PWD密码为2012112120131219 8,SPC密码是上面第2.3步骤获取到的6位数字 9,默认是写号,改为RuimOnly 读UIM卡模式 10,写电信的3G接口照图写ctwap@mycdma.cnvnet.mobi 11,写SimpleIP 12,写完上面的参数,关闭DFS。不要断开手机,也不用拔掉数据线。接着做下面的步骤四四,破解三网识别:1,打开桌面的S4 Flasher软件,点击scan and unlock,然后等待手机重启,就完成解锁三网了。到此完美三网插卡。2手机享受三网插卡吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值