API CHANGE: expose the backup-related ApplicationInfo flag masks
Fixes bug #2507582 by doing the following: - Un-@hide the FLAG_ALLOW_BACKUP, FLAG_KILL_AFTER_RESTORE, and FLAG_RESTORE_ANY_VERSION mask constants in ApplicationInfo. These correspond, respectively, to the <application> manifest tag's android:allowBackup, android:killAfterRestore, and android:restoreAnyVersion attributes. - Remove the android:restoreNeedsApplication attribute and the corresponding FLAG_RESTORE_NEEDS_APPLICATION constant [which was still marked @hide]. We now always use the application's own Application class when performing a normal restore. In the future when we support an externalized full-filesystem backup/restore operation, we will use an OS-defined agent class with a base-class Application instance, but this will not happen until a future release. Also expands real documentation on the above ApplicationInfo constants; that work is part of bug #2465360 Change-Id: I735d07a963ae80a01343637d83bef84e4c23fdcc
This commit is contained in:
@ -819,8 +819,6 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
+ " uid=" + p.applicationInfo.uid
|
||||
+ " killAfterRestore="
|
||||
+ (((p.applicationInfo.flags & ApplicationInfo.FLAG_KILL_AFTER_RESTORE) != 0) ? "true" : "false")
|
||||
+ " restoreNeedsApplication="
|
||||
+ (((p.applicationInfo.flags & ApplicationInfo.FLAG_RESTORE_NEEDS_APPLICATION) != 0) ? "true" : "false")
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1677,17 +1675,10 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
+ "] is compatible with installed version ["
|
||||
+ packageInfo.versionCode + "]");
|
||||
|
||||
// Then set up and bind the agent (with a restricted Application object
|
||||
// unless the application says otherwise)
|
||||
boolean useRealApp = (packageInfo.applicationInfo.flags
|
||||
& ApplicationInfo.FLAG_RESTORE_NEEDS_APPLICATION) != 0;
|
||||
if (DEBUG && useRealApp) {
|
||||
Slog.v(TAG, "agent requires real Application subclass for restore");
|
||||
}
|
||||
// Then set up and bind the agent
|
||||
IBackupAgent agent = bindToAgentSynchronous(
|
||||
packageInfo.applicationInfo,
|
||||
(useRealApp ? IApplicationThread.BACKUP_MODE_INCREMENTAL
|
||||
: IApplicationThread.BACKUP_MODE_RESTORE));
|
||||
IApplicationThread.BACKUP_MODE_INCREMENTAL);
|
||||
if (agent == null) {
|
||||
Slog.w(TAG, "Can't find backup agent for " + packageName);
|
||||
EventLog.writeEvent(EventLogTags.RESTORE_AGENT_FAILURE, packageName,
|
||||
|
Reference in New Issue
Block a user