/** * 反射改变sharePreference的存储位置 * * @param context * @return */ public static SharedPreferences getSharedPreferences(Context context) { try { //利用java反射机制将XML文件自定义存储 Field field; // 获取ContextWrapper对象中的mBase变量。该变量保存了ContextImpl对象 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 = new File("/sdcard/testposition/"); // 修改mPreferencesDir变量的值 field.set(obj, file); SharedPreferences sharedPreferences = context.getSharedPreferences ("test", Context.MODE_PRIVATE); return sharedPreferences; } catch (Exception e) { return null; } }
调用上面的方法就可以将SharedPreferences的存储路径改为/sdcard/testposition/ 文件名为test
然后调用getSharedPreferences(context).edit();方法就可以存储就可以获取 SharedPreferences.Editor
然后调用editor.put方法 deitor.commit 方法就可以存储值
调用getSharedPreferences(context).get方法就可以拿到存储的值