ContextImpl里面有一个字段mPreferencesDir,这个文件目录就是保存了SharePreference路径的,只需要修改这个为我们自定义的路径就好了,由于ContextImpl是一个隐藏类,我们需要使用反射去实现,下面是具体的代码:
try {
Class<?> clazz=Class.forName("android.app.ContextImpl")
Method method=clazz.getDeclaredMethod("getImpl", Context.class)
method.setAccessible(true)
Object mContextImpl=method.invoke(null,this)
//获取ContextImpl的实例
Log.d("csdn","mContextImpl="+mContextImpl)
Field mPreferencesDir=clazz.getDeclaredField("mPreferencesDir")
mPreferencesDir.setAccessible(true)
//自定义路径
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File file=new File(Environment.getExternalStorageDirectory(),"new_shared_pres")
if (!file.exists()){
file.mkdirs()
}
mPreferencesDir.set(mContextImpl,file)
Log.d("csdn","修改sp路径成功")
}
} catch (Exception e) {
e.printStackTrace()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)