Fix the metadata-available test during restore
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 2ae9fc5..80697a1 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -985,8 +985,7 @@
// Verify that the backup set includes metadata. If not, we can't do
// signature/version verification etc, so we simply do not proceed with
// the restore operation.
- Metadata pmMeta = pmAgent.getRestoredMetadata(packageName);
- if (pmMeta == null) {
+ if (!pmAgent.hasMetadata()) {
Log.i(TAG, "No restore metadata available, so not restoring settings");
return;
}
diff --git a/services/java/com/android/server/PackageManagerBackupAgent.java b/services/java/com/android/server/PackageManagerBackupAgent.java
index a1b4c268..786f423 100644
--- a/services/java/com/android/server/PackageManagerBackupAgent.java
+++ b/services/java/com/android/server/PackageManagerBackupAgent.java
@@ -67,6 +67,7 @@
private final HashSet<String> mExisting = new HashSet<String>();
private int mStoredSdkVersion;
private String mStoredIncrementalVersion;
+ private boolean mHasMetadata;
public class Metadata {
public int versionCode;
@@ -84,6 +85,11 @@
mPackageManager = packageMgr;
mAllPackages = packages;
mRestoredSignatures = null;
+ mHasMetadata = false;
+ }
+
+ public boolean hasMetadata() {
+ return mHasMetadata;
}
public Metadata getRestoredMetadata(String packageName) {
@@ -259,6 +265,7 @@
}
mStoredSdkVersion = storedSdkVersion;
mStoredIncrementalVersion = in.readUTF();
+ mHasMetadata = true;
// !!! TODO: remove this debugging output
if (DEBUG) {
Log.i(TAG, "Restore set version " + storedSystemVersion