Full backup tweaks
* provide placeholder UI showing backup/restore start/stop/timeout
* don't kill the progress UI in mid stream
* tidy up the pax extended header data writing a little
Change-Id: Ife0cb78e3facb541d8327f1d5ca5fe77faa6cbca
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index a334dbb..77c2a44 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -1710,8 +1710,7 @@
IApplicationThread.BACKUP_MODE_FULL);
if (agent != null) {
try {
- ApplicationInfo app = mPackageManager.getApplicationInfo(
- pkg.packageName, 0);
+ ApplicationInfo app = pkg.applicationInfo;
boolean sendApk = mIncludeApks
&& ((app.flags & ApplicationInfo.FLAG_FORWARD_LOCK) == 0)
&& ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0 ||
@@ -1742,9 +1741,6 @@
} else {
if (DEBUG) Slog.d(TAG, "Full backup success: " + pkg.packageName);
}
- } catch (NameNotFoundException e) {
- Slog.e(TAG, "Package exists but not app info; skipping: "
- + pkg.packageName);
} catch (IOException e) {
Slog.e(TAG, "Error backing up " + pkg.packageName, e);
}
@@ -1816,8 +1812,11 @@
// unbind and tidy up even on timeout or failure, just in case
mActivityManager.unbindBackupAgent(app);
- // The agent was running with a stub Application object, so shut it down
- if (app.uid != Process.SYSTEM_UID) {
+ // The agent was running with a stub Application object, so shut it down.
+ // !!! We hardcode the confirmation UI's package name here rather than use a
+ // manifest flag! TODO something less direct.
+ if (app.uid != Process.SYSTEM_UID
+ && !pkg.packageName.equals("com.android.backupconfirm")) {
if (DEBUG) Slog.d(TAG, "Backup complete, killing host process");
mActivityManager.killApplicationProcess(app.processName, app.uid);
} else {