要在第一次試用SharedPreference之前調(diào)用
在實(shí)際的開發(fā)過程中,經(jīng)常需要將配置文件保存到SharedPreference中,且在應(yīng)用卸載重裝后配置文件不會(huì)丟掉。默認(rèn)的SharedPreference位于app的shraredPref文件夾下,應(yīng)用卸載后就被刪除了,那么只有改變SharedPreference的位置了,代碼:
private void changeSPLocation() {
try {
Field field;
// 獲取ContextWrapper對(duì)象中的mBase變量。該變量保存了ContextImpl對(duì)象
field = ContextWrapper.class.getDeclaredField("mBase");
field.setAccessible(true);
// 獲取mBase變量
Object obj = field.get(this);
// 獲取ContextImpl。mPreferencesDir變量,該變量保存了數(shù)據(jù)文件的保存路徑
field = obj.getClass().getDeclaredField("mPreferencesDir");
field.setAccessible(true);
// 創(chuàng)建自定義路徑
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初始化時(shí)調(diào)用該方法即可