summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2014-02-25 17:42:21 -0800
committerChristopher Tate <ctate@google.com>2014-02-25 17:42:21 -0800
commita9b91864a1aedd71eaaaa43ee078cf93922289f3 (patch)
tree378f6fa94ebe60115b067a779d35d07e36e570e7 /core
parent3651cb7b4a0c3c731905301e868cca1c3af5aa21 (diff)
downloadframeworks_base-a9b91864a1aedd71eaaaa43ee078cf93922289f3.zip
frameworks_base-a9b91864a1aedd71eaaaa43ee078cf93922289f3.tar.gz
frameworks_base-a9b91864a1aedd71eaaaa43ee078cf93922289f3.tar.bz2
Deal with apps known to LocalTransport backend but with no data
An app might have backed something up and later deleted it, in which case it will have a directory in the LocalTransport bookkeeping but with no actual dataset. Skip these packages at restore time, since we know a priori that there will be nothing to do. Change-Id: I85853097bc65ed60e5efd217ee6553b50459e445
Diffstat (limited to 'core')
-rw-r--r--core/java/com/android/internal/backup/LocalTransport.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/core/java/com/android/internal/backup/LocalTransport.java b/core/java/com/android/internal/backup/LocalTransport.java
index 2fe2494..a604d84 100644
--- a/core/java/com/android/internal/backup/LocalTransport.java
+++ b/core/java/com/android/internal/backup/LocalTransport.java
@@ -233,7 +233,9 @@ public class LocalTransport extends IBackupTransport.Stub {
if (mRestorePackages == null) throw new IllegalStateException("startRestore not called");
while (++mRestorePackage < mRestorePackages.length) {
String name = mRestorePackages[mRestorePackage].packageName;
- if (new File(mDataDir, name).isDirectory()) {
+ // skip packages where we have a data dir but no actual contents
+ String[] contents = (new File(mDataDir, name)).list();
+ if (contents != null && contents.length > 0) {
if (DEBUG) Log.v(TAG, " nextRestorePackage() = " + name);
return name;
}