diff options
Diffstat (limited to 'services/java/com/android/server/SystemBackupAgent.java')
-rw-r--r-- | services/java/com/android/server/SystemBackupAgent.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/services/java/com/android/server/SystemBackupAgent.java b/services/java/com/android/server/SystemBackupAgent.java index 80b0174b22c3..54555bb19689 100644 --- a/services/java/com/android/server/SystemBackupAgent.java +++ b/services/java/com/android/server/SystemBackupAgent.java @@ -20,6 +20,7 @@ package com.android.server; import android.app.backup.BackupDataInput; import android.app.backup.BackupDataOutput; import android.app.backup.BackupAgentHelper; +import android.app.backup.FullBackup; import android.app.backup.WallpaperBackupHelper; import android.content.Context; import android.os.ParcelFileDescriptor; @@ -37,12 +38,19 @@ public class SystemBackupAgent extends BackupAgentHelper { private static final String TAG = "SystemBackupAgent"; // These paths must match what the WallpaperManagerService uses - private static final String WALLPAPER_IMAGE = "/data/data/com.android.settings/files/wallpaper"; - private static final String WALLPAPER_INFO = "/data/system/wallpaper_info.xml"; + private static final String WALLPAPER_IMAGE_DIR = "/data/data/com.android.settings/files"; + private static final String WALLPAPER_IMAGE = WALLPAPER_IMAGE_DIR + "/wallpaper"; + private static final String WALLPAPER_INFO_DIR = "/data/system"; + private static final String WALLPAPER_INFO = WALLPAPER_INFO_DIR + "/wallpaper_info.xml"; @Override public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException { + if (oldState == null) { + runFullBackup(data); + return; + } + // We only back up the data under the current "wallpaper" schema with metadata WallpaperManagerService wallpaper = (WallpaperManagerService)ServiceManager.getService( Context.WALLPAPER_SERVICE); @@ -57,6 +65,14 @@ public class SystemBackupAgent extends BackupAgentHelper { super.onBackup(oldState, data, newState); } + private void runFullBackup(BackupDataOutput output) { + // Back up the data files directly + FullBackup.backupToTar(getPackageName(), null, null, + WALLPAPER_IMAGE_DIR, WALLPAPER_IMAGE, output); + FullBackup.backupToTar(getPackageName(), null, null, + WALLPAPER_INFO_DIR, WALLPAPER_INFO, output); + } + @Override public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException { |