android 自定义目录,android – 将SharedPreferences文件保存到自定义目录或获取默认的SharedPreferences目录...

Or is it possible to retrieve the directory SharedPreferences are

saved by default to?

是.

这基本上是您可以从ApplicationInfo对象获取的dataDir / shared_prefs(反过来您可以从PackageManager获取). (另外,它可能与“getFilesDir”目录相同,你可以从Context本身轻松获得?不确定,没有检查.)

从源代码开始,以Context.getSharedPreferences(ContextImpl source)开头:

public SharedPreferences getSharedPreferences(String name,int mode) {

SharedPreferencesImpl sp;

File prefsFile;

boolean needInitialLoad = false;

synchronized (sSharedPrefs) {

sp = sSharedPrefs.get(name);

if (sp != null && !sp.hasFileChangedUnexpectedly()) {

return sp;

}

prefsFile = getSharedPrefsFile(name);

...

public File getSharedPrefsFile(String name) {

return makeFilename(getPreferencesDir(),name + ".xml");

}

private File getPreferencesDir() {

synchronized (mSync) {

if (mPreferencesDir == null) {

mPreferencesDir = new File(getDataDirFile(),"shared_prefs");

}

return mPreferencesDir;

}

}

private File getDataDirFile() {

if (mPackageInfo != null) {

return mPackageInfo.getDataDirFile();

}

throw new RuntimeException("Not supported in system context");

}

而“mPackageInfo”是LoadedApk的一个实例:

public File getDataDirFile() {

return mDataDirFile;

}

mDataDirFile = mDataDir != null ? new File(mDataDir) : null;

mDataDir = aInfo.dataDir;

这将我们带回到ApplicationInfo.

我想说如果你不想依赖于convention / data / data /< package_name> / shared_prefs,那么获取“dataDir”并从那里依赖“shared_prefs”应该是安全的吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值