在实际的开发过程中,经常需要将配置文件保存到SharedPreference中,且在应用卸载重装后配置文件不会丢掉。默认的SharedPreference位于app的shraredPref文件夹下,应用卸载后就被删除了,那么只有改变SharedPreference的位置了,代码:
private void changeSPLocation() {
try {
Field field;
// 获取ContextWrapper对象中的mBase变量。该变量保存了ContextImpl对象
field = ContextWrapper.class.getDeclaredField("mBase");
field.setAccessible(true);
// 获取mBase变量
Object obj = field.get(this);
// 获取ContextImpl。mPreferencesDir变量,该变量保存了数据文件的保存路径
field = obj.getClass().getDeclaredField("mPreferencesDir");
field.setAccessible(true);
// 创建自定义路径
File file = new File(android.os.Environment.getExternalStorageDirectory().getPath());
// 修改mPreferencesDir变量的值
field.set(obj, file);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在Application初始化时调用该方法即可