Merge "API CHANGE: expose the backup-related ApplicationInfo flag masks"
This commit is contained in:
committed by
Android (Google) Code Review
commit
38af4c36fc
@@ -42859,6 +42859,17 @@
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="FLAG_ALLOW_BACKUP"
|
||||
type="int"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="32768"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="FLAG_ALLOW_CLEAR_USER_DATA"
|
||||
type="int"
|
||||
transient="false"
|
||||
@@ -42914,6 +42925,17 @@
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="FLAG_KILL_AFTER_RESTORE"
|
||||
type="int"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="65536"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="FLAG_PERSISTENT"
|
||||
type="int"
|
||||
transient="false"
|
||||
@@ -42936,6 +42958,17 @@
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="FLAG_RESTORE_ANY_VERSION"
|
||||
type="int"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="131072"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="FLAG_SUPPORTS_LARGE_SCREENS"
|
||||
type="int"
|
||||
transient="false"
|
||||
@@ -74310,7 +74343,7 @@
|
||||
type="float"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="0.001f"
|
||||
value="0.0010f"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
@@ -214714,7 +214747,7 @@
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="t" type="T">
|
||||
<parameter name="arg0" type="T">
|
||||
</parameter>
|
||||
</method>
|
||||
</interface>
|
||||
|
||||
@@ -52,8 +52,6 @@ import android.util.Log;
|
||||
*
|
||||
* @attr ref android.R.styleable#AndroidManifestApplication_allowBackup
|
||||
* @attr ref android.R.styleable#AndroidManifestApplication_backupAgent
|
||||
* @attr ref
|
||||
* android.R.styleable#AndroidManifestApplication_restoreNeedsApplication
|
||||
* @attr ref android.R.styleable#AndroidManifestApplication_killAfterRestore
|
||||
*/
|
||||
public class BackupManager {
|
||||
|
||||
@@ -200,34 +200,53 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
public static final int FLAG_VM_SAFE_MODE = 1<<14;
|
||||
|
||||
/**
|
||||
* Value for {@link #flags}: this is false if the application has set
|
||||
* its android:allowBackup to false, true otherwise.
|
||||
* Value for {@link #flags}: set to <code>false</code> if the application does not wish
|
||||
* to permit any OS-driven backups of its data; <code>true</code> otherwise.
|
||||
*
|
||||
* {@hide}
|
||||
* <p>Comes from the
|
||||
* {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup}
|
||||
* attribute of the <application> tag.
|
||||
*/
|
||||
public static final int FLAG_ALLOW_BACKUP = 1<<15;
|
||||
|
||||
/**
|
||||
* Value for {@link #flags}: this is false if the application has set
|
||||
* its android:killAfterRestore to false, true otherwise.
|
||||
* Value for {@link #flags}: set to <code>false</code> if the application must be kept
|
||||
* in memory following a full-system restore operation; <code>true</code> otherwise.
|
||||
* Ordinarily, during a full system restore operation each application is shut down
|
||||
* following execution of its agent's onRestore() method. Setting this attribute to
|
||||
* <code>false</code> prevents this. Most applications will not need to set this attribute.
|
||||
*
|
||||
* <p>If android:allowBackup is set to false or no android:backupAgent
|
||||
* <p>If
|
||||
* {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup}
|
||||
* is set to <code>false</code> or no
|
||||
* {@link android.R.styleable#AndroidManifestApplication_backupAgent android:backupAgent}
|
||||
* is specified, this flag will be ignored.
|
||||
*
|
||||
* {@hide}
|
||||
* <p>Comes from the
|
||||
* {@link android.R.styleable#AndroidManifestApplication_killAfterRestore android:killAfterRestore}
|
||||
* attribute of the <application> tag.
|
||||
*/
|
||||
public static final int FLAG_KILL_AFTER_RESTORE = 1<<16;
|
||||
|
||||
/**
|
||||
* Value for {@link #flags}: this is true if the application has set
|
||||
* its android:restoreNeedsApplication to true, false otherwise.
|
||||
* Value for {@link #flags}: Set to <code>true</code> if the application's backup
|
||||
* agent claims to be able to handle restore data even "from the future,"
|
||||
* i.e. from versions of the application with a versionCode greater than
|
||||
* the one currently installed on the device. <i>Use with caution!</i> By default
|
||||
* this attribute is <code>false</code> and the Backup Manager will ensure that data
|
||||
* from "future" versions of the application are never supplied during a restore operation.
|
||||
*
|
||||
* <p>If android:allowBackup is set to false or no android:backupAgent
|
||||
* <p>If
|
||||
* {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup}
|
||||
* is set to <code>false</code> or no
|
||||
* {@link android.R.styleable#AndroidManifestApplication_backupAgent android:backupAgent}
|
||||
* is specified, this flag will be ignored.
|
||||
*
|
||||
* {@hide}
|
||||
* <p>Comes from the
|
||||
* {@link android.R.styleable#AndroidManifestApplication_restoreAnyVersion android:restoreAnyVersion}
|
||||
* attribute of the <application> tag.
|
||||
*/
|
||||
public static final int FLAG_RESTORE_NEEDS_APPLICATION = 1<<17;
|
||||
public static final int FLAG_RESTORE_ANY_VERSION = 1<<17;
|
||||
|
||||
/**
|
||||
* Value for {@link #flags}: this is true if the application has set
|
||||
@@ -263,19 +282,6 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
*/
|
||||
public static final int FLAG_NATIVE_DEBUGGABLE = 1<<21;
|
||||
|
||||
/**
|
||||
* Value for {@link #flags}: Set to true if the application's backup
|
||||
* agent claims to be able to handle restore data even "from the future,"
|
||||
* i.e. from versions of the application with a versionCode greater than
|
||||
* the one currently installed on the device.
|
||||
*
|
||||
* <p>If android:allowBackup is set to false or no android:backupAgent
|
||||
* is specified, this flag will be ignored.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
public static final int FLAG_RESTORE_ANY_VERSION = 1<<22;
|
||||
|
||||
/**
|
||||
* Flags associated with the application. Any combination of
|
||||
* {@link #FLAG_SYSTEM}, {@link #FLAG_DEBUGGABLE}, {@link #FLAG_HAS_CODE},
|
||||
|
||||
@@ -1448,8 +1448,8 @@ public class PackageParser {
|
||||
if (allowBackup) {
|
||||
ai.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
|
||||
|
||||
// backupAgent, killAfterRestore, restoreNeedsApplication, and restoreAnyVersion
|
||||
// are only relevant if backup is possible for the given application.
|
||||
// backupAgent, killAfterRestore, and restoreAnyVersion are only relevant
|
||||
// if backup is possible for the given application.
|
||||
String backupAgent = sa.getNonConfigurationString(
|
||||
com.android.internal.R.styleable.AndroidManifestApplication_backupAgent, 0);
|
||||
if (backupAgent != null) {
|
||||
@@ -1464,11 +1464,6 @@ public class PackageParser {
|
||||
true)) {
|
||||
ai.flags |= ApplicationInfo.FLAG_KILL_AFTER_RESTORE;
|
||||
}
|
||||
if (sa.getBoolean(
|
||||
com.android.internal.R.styleable.AndroidManifestApplication_restoreNeedsApplication,
|
||||
false)) {
|
||||
ai.flags |= ApplicationInfo.FLAG_RESTORE_NEEDS_APPLICATION;
|
||||
}
|
||||
if (sa.getBoolean(
|
||||
com.android.internal.R.styleable.AndroidManifestApplication_restoreAnyVersion,
|
||||
false)) {
|
||||
|
||||
@@ -589,7 +589,7 @@
|
||||
<attr name="reqFiveWayNav" format="boolean" />
|
||||
|
||||
<!-- The name of the class implementing <code>BackupAgent</code> to manage
|
||||
backup and restore of the application's settings to external storage. -->
|
||||
backup and restore of application data on external storage. -->
|
||||
<attr name="backupAgent" format="string" />
|
||||
|
||||
<!-- Whether to allow the application to participate in backup
|
||||
@@ -600,13 +600,18 @@
|
||||
<attr name="allowBackup" format="boolean" />
|
||||
|
||||
<!-- Whether the application in question should be terminated after its
|
||||
settings have been restored. The default is <code>true</code>,
|
||||
which means to do so. -->
|
||||
settings have been restored during a full-system restore operation.
|
||||
Single-package restore operations will never cause the application to
|
||||
be shut down. Full-system restore operations typically only occur once,
|
||||
when the phone is first set up. Third-party applications will not usually
|
||||
need to use this attribute.
|
||||
|
||||
<p>The default is <code>true</code>, which means that after the application
|
||||
has finished processing its data during a full-system restore, it will be
|
||||
terminated. -->
|
||||
<attr name="killAfterRestore" format="boolean" />
|
||||
|
||||
<!-- Whether the application needs to have its own Application subclass
|
||||
active during restore. The default is to run restore with a minimal
|
||||
Application class to avoid interference with application logic. -->
|
||||
<!-- @deprecated This attribute is not used by the Android operating system. -->
|
||||
<attr name="restoreNeedsApplication" format="boolean" />
|
||||
|
||||
<!-- Indicate that the application is prepared to attempt a restore of any
|
||||
|
||||
@@ -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