Loading api/current.xml +26 −0 Original line number Diff line number Diff line Loading @@ -29035,6 +29035,19 @@ <parameter name="mode" type="int"> </parameter> </method> <method name="getSharedPrefsFile" return="java.io.File" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="name" type="java.lang.String"> </parameter> </method> <method name="getSystemService" return="java.lang.Object" abstract="false" Loading Loading @@ -115907,6 +115920,19 @@ <parameter name="mode" type="int"> </parameter> </method> <method name="getSharedPrefsFile" return="java.io.File" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="name" type="java.lang.String"> </parameter> </method> <method name="getSystemService" return="java.lang.Object" abstract="false" core/java/android/app/ApplicationContext.java +5 −1 Original line number Diff line number Diff line Loading @@ -300,10 +300,14 @@ class ApplicationContext extends Context { return new File(prefsFile.getPath() + ".bak"); } public File getSharedPrefsFile(String name) { return makeFilename(getPreferencesDir(), name + ".xml"); } @Override public SharedPreferences getSharedPreferences(String name, int mode) { SharedPreferencesImpl sp; File f = makeFilename(getPreferencesDir(), name + ".xml"); File f = getSharedPrefsFile(name); synchronized (sSharedPrefs) { sp = sSharedPrefs.get(f); if (sp != null && !sp.hasFileChanged()) { Loading core/java/android/backup/FileBackupHelper.java +25 −11 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.os.ParcelFileDescriptor; import android.util.Log; import java.io.File; import java.io.FileDescriptor; /** @hide */ Loading @@ -34,22 +35,34 @@ public class FileBackupHelper { public static void performBackup(Context context, ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState, String[] files) { String basePath = context.getFilesDir().getAbsolutePath(); performBackup_checked(basePath, oldState, data, newState, files); File base = context.getFilesDir(); final int N = files.length; String[] fullPaths = new String[N]; for (int i=0; i<N; i++) { fullPaths[i] = (new File(base, files[i])).getAbsolutePath(); } performBackup_checked(oldState, data, newState, fullPaths, files); } /** * Check the parameters so the native code doens't have to throw all the exceptions * since it's easier to do that from java. */ static void performBackup_checked(String basePath, ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState, String[] files) { static void performBackup_checked(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState, String[] files, String[] keys) { if (files.length == 0) { return; } if (basePath == null) { throw new NullPointerException(); // files must be all absolute paths for (String f: files) { if (f.charAt(0) != '/') { throw new RuntimeException("files must have all absolute paths: " + f); } } // the length of files and keys must be the same if (files.length != keys.length) { throw new RuntimeException("files.length=" + files.length + " keys.length=" + keys.length); } // oldStateFd can be null FileDescriptor oldStateFd = oldState != null ? oldState.getFileDescriptor() : null; Loading @@ -58,13 +71,14 @@ public class FileBackupHelper { throw new NullPointerException(); } int err = performBackup_native(basePath, oldStateFd, data.mBackupWriter, newStateFd, files); int err = performBackup_native(oldStateFd, data.mBackupWriter, newStateFd, files, keys); if (err != 0) { throw new RuntimeException("Backup failed"); // TODO: more here // TODO: more here throw new RuntimeException("Backup failed 0x" + Integer.toHexString(err)); } } native private static int performBackup_native(String basePath, FileDescriptor oldState, int data, FileDescriptor newState, String[] files); native private static int performBackup_native(FileDescriptor oldState, int data, FileDescriptor newState, String[] files, String[] keys); } core/java/android/backup/SharedPreferencesBackupHelper.java +2 −4 Original line number Diff line number Diff line Loading @@ -26,16 +26,14 @@ public class SharedPreferencesBackupHelper { public static void performBackup(Context context, ParcelFileDescriptor oldSnapshot, ParcelFileDescriptor newSnapshot, BackupDataOutput data, String[] prefGroups) { String basePath = "/xxx"; //context.getPreferencesDir(); // make filenames for the prefGroups final int N = prefGroups.length; String[] files = new String[N]; for (int i=0; i<N; i++) { files[i] = prefGroups[i] + ".xml"; files[i] = context.getSharedPrefsFile(prefGroups[i]).toString(); } FileBackupHelper.performBackup_checked(basePath, oldSnapshot, data, newSnapshot, files); FileBackupHelper.performBackup_checked(oldSnapshot, data, newSnapshot, files, prefGroups); } } core/java/android/content/Context.java +9 −1 Original line number Diff line number Diff line Loading @@ -254,11 +254,19 @@ public abstract class Context { * <p>Note: this is not generally useful for applications, since they should * not be directly accessing the file system. * * * @return String Path to the code and assets. */ public abstract String getPackageCodePath(); /** * {@hide} * Return the full path to the shared prefs file for the given prefs group name. * * <p>Note: this is not generally useful for applications, since they should * not be directly accessing the file system. */ public abstract File getSharedPrefsFile(String name); /** * Retrieve and hold the contents of the preferences file 'name', returning * a SharedPreferences through which you can retrieve and modify its Loading Loading
api/current.xml +26 −0 Original line number Diff line number Diff line Loading @@ -29035,6 +29035,19 @@ <parameter name="mode" type="int"> </parameter> </method> <method name="getSharedPrefsFile" return="java.io.File" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="name" type="java.lang.String"> </parameter> </method> <method name="getSystemService" return="java.lang.Object" abstract="false" Loading Loading @@ -115907,6 +115920,19 @@ <parameter name="mode" type="int"> </parameter> </method> <method name="getSharedPrefsFile" return="java.io.File" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="name" type="java.lang.String"> </parameter> </method> <method name="getSystemService" return="java.lang.Object" abstract="false"
core/java/android/app/ApplicationContext.java +5 −1 Original line number Diff line number Diff line Loading @@ -300,10 +300,14 @@ class ApplicationContext extends Context { return new File(prefsFile.getPath() + ".bak"); } public File getSharedPrefsFile(String name) { return makeFilename(getPreferencesDir(), name + ".xml"); } @Override public SharedPreferences getSharedPreferences(String name, int mode) { SharedPreferencesImpl sp; File f = makeFilename(getPreferencesDir(), name + ".xml"); File f = getSharedPrefsFile(name); synchronized (sSharedPrefs) { sp = sSharedPrefs.get(f); if (sp != null && !sp.hasFileChanged()) { Loading
core/java/android/backup/FileBackupHelper.java +25 −11 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.os.ParcelFileDescriptor; import android.util.Log; import java.io.File; import java.io.FileDescriptor; /** @hide */ Loading @@ -34,22 +35,34 @@ public class FileBackupHelper { public static void performBackup(Context context, ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState, String[] files) { String basePath = context.getFilesDir().getAbsolutePath(); performBackup_checked(basePath, oldState, data, newState, files); File base = context.getFilesDir(); final int N = files.length; String[] fullPaths = new String[N]; for (int i=0; i<N; i++) { fullPaths[i] = (new File(base, files[i])).getAbsolutePath(); } performBackup_checked(oldState, data, newState, fullPaths, files); } /** * Check the parameters so the native code doens't have to throw all the exceptions * since it's easier to do that from java. */ static void performBackup_checked(String basePath, ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState, String[] files) { static void performBackup_checked(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState, String[] files, String[] keys) { if (files.length == 0) { return; } if (basePath == null) { throw new NullPointerException(); // files must be all absolute paths for (String f: files) { if (f.charAt(0) != '/') { throw new RuntimeException("files must have all absolute paths: " + f); } } // the length of files and keys must be the same if (files.length != keys.length) { throw new RuntimeException("files.length=" + files.length + " keys.length=" + keys.length); } // oldStateFd can be null FileDescriptor oldStateFd = oldState != null ? oldState.getFileDescriptor() : null; Loading @@ -58,13 +71,14 @@ public class FileBackupHelper { throw new NullPointerException(); } int err = performBackup_native(basePath, oldStateFd, data.mBackupWriter, newStateFd, files); int err = performBackup_native(oldStateFd, data.mBackupWriter, newStateFd, files, keys); if (err != 0) { throw new RuntimeException("Backup failed"); // TODO: more here // TODO: more here throw new RuntimeException("Backup failed 0x" + Integer.toHexString(err)); } } native private static int performBackup_native(String basePath, FileDescriptor oldState, int data, FileDescriptor newState, String[] files); native private static int performBackup_native(FileDescriptor oldState, int data, FileDescriptor newState, String[] files, String[] keys); }
core/java/android/backup/SharedPreferencesBackupHelper.java +2 −4 Original line number Diff line number Diff line Loading @@ -26,16 +26,14 @@ public class SharedPreferencesBackupHelper { public static void performBackup(Context context, ParcelFileDescriptor oldSnapshot, ParcelFileDescriptor newSnapshot, BackupDataOutput data, String[] prefGroups) { String basePath = "/xxx"; //context.getPreferencesDir(); // make filenames for the prefGroups final int N = prefGroups.length; String[] files = new String[N]; for (int i=0; i<N; i++) { files[i] = prefGroups[i] + ".xml"; files[i] = context.getSharedPrefsFile(prefGroups[i]).toString(); } FileBackupHelper.performBackup_checked(basePath, oldSnapshot, data, newSnapshot, files); FileBackupHelper.performBackup_checked(oldSnapshot, data, newSnapshot, files, prefGroups); } }
core/java/android/content/Context.java +9 −1 Original line number Diff line number Diff line Loading @@ -254,11 +254,19 @@ public abstract class Context { * <p>Note: this is not generally useful for applications, since they should * not be directly accessing the file system. * * * @return String Path to the code and assets. */ public abstract String getPackageCodePath(); /** * {@hide} * Return the full path to the shared prefs file for the given prefs group name. * * <p>Note: this is not generally useful for applications, since they should * not be directly accessing the file system. */ public abstract File getSharedPrefsFile(String name); /** * Retrieve and hold the contents of the preferences file 'name', returning * a SharedPreferences through which you can retrieve and modify its Loading