From b8eb1cb79b2912b91a1b0198ba3e61776af07a79 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Wed, 16 Sep 2009 10:57:21 -0700 Subject: [PATCH] Be sure to include shared lib path info when dealing with agents In particular, this ensures that on the client side the full classpath is known and used by the class loader during execution of the agent. --- .../android/server/BackupManagerService.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index 0e60dd64c2144..c6be61dcf2639 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -649,11 +649,21 @@ class BackupManagerService extends IBackupManager.Stub { int N = packages.size(); for (int a = N-1; a >= 0; a--) { PackageInfo pkg = packages.get(a); - ApplicationInfo app = pkg.applicationInfo; - if (((app.flags&ApplicationInfo.FLAG_ALLOW_BACKUP) == 0) - || app.backupAgentName == null - || (mPackageManager.checkPermission(android.Manifest.permission.BACKUP_DATA, - pkg.packageName) != PackageManager.PERMISSION_GRANTED)) { + try { + ApplicationInfo app = pkg.applicationInfo; + if (((app.flags&ApplicationInfo.FLAG_ALLOW_BACKUP) == 0) + || app.backupAgentName == null + || (mPackageManager.checkPermission(android.Manifest.permission.BACKUP_DATA, + pkg.packageName) != PackageManager.PERMISSION_GRANTED)) { + packages.remove(a); + } + else { + // we will need the shared library path, so look that up and store it here + app = mPackageManager.getApplicationInfo(pkg.packageName, + PackageManager.GET_SHARED_LIBRARY_FILES); + pkg.applicationInfo.sharedLibraryFiles = app.sharedLibraryFiles; + } + } catch (NameNotFoundException e) { packages.remove(a); } }