Oppure è possibile recuperare la directory SharedPreferences sono salvate per impostazione predefinita su?
Sì.
Questo è fondamentalmente il dataDir/shared_prefs che si possono ottenere dal ApplicationInfo oggetto (che a sua volta si può ottenere dal PackageManager). (Inoltre, potrebbe essere lo stesso del "getFilesDir" dir si può ottenere facilmente da Contesto stessa? Non sono sicuro, non controllare che.)
Dalla sorgente, a partire da 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");
}
E "mPackageInfo" è un'istanza di LoadedApk:
public File getDataDirFile() {
return mDataDirFile;
}
mDataDirFile = mDataDir != null ? new File(mDataDir) : null;
mDataDir = aInfo.dataDir;
e T cappello ci riporta a ApplicationInfo.
Direi che se non si vuole fare affidamento sulla convenzione /dati/dati/<PACKAGE_NAME>/shared_prefs allora dovrebbe essere sicuro di ottenere il "DATADIR" e si basano su "shared_prefs" da lì ?
fonte
2011-11-20 00:05:35
si può provare questo: 'File dir = GETDIR ("shared_prefs");' – Dalmas
Questa directory creerà solo '/ dati/dati/package.name/app_shared_prefs/' –