Add the provisioning extra admin extras bundle.

Enables the MDM app running (as a regular app) in the primary user to pass
through a bundle of data with which to bootstrap the instance of itself
running as profile owner in the managed profile.

Bug:17126717
Change-Id: I28a368d13e33990b16dcd68436902e0a077d5f5d
diff --git a/api/current.txt b/api/current.txt
index 009b534..4dd6d4d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -5518,6 +5518,7 @@
     field public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0; // 0x0
     field public static final java.lang.String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
     field public static final java.lang.String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
+    field public static final java.lang.String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE = "android.app.extra.ADMIN_EXTRA_BUNDLE";
     field public static final java.lang.String EXTRA_PROVISIONING_DEFAULT_MANAGED_PROFILE_NAME = "android.app.extra.DEFAULT_MANAGED_PROFILE_NAME";
     field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM = "android.app.extra.DEVICE_ADMIN_PACKAGE_CHECKSUM";
     field public static final java.lang.String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 69b1139..9ed8960 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -115,6 +115,18 @@
         = "android.app.action.ACTION_PROVISION_MANAGED_PROFILE";
 
     /**
+     * A {@link Parcelable} extra of type {@link PersistableBundle} that allows a mobile device
+     * management application that starts managed profile provisioning to pass data to itself on the
+     * managed profile when provisioning completes. The mobile device management application sends
+     * this extra in an intent with the action {@link #ACTION_PROVISION_MANAGED_PROFILE} and
+     * receives it in {@link DeviceAdminReceiver#onProfileProvisioningComplete} via an intent with
+     * the action {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE}. The bundle is
+     * not changed during the managed profile provisioning.
+     */
+    public static final String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE =
+            "android.app.extra.ADMIN_EXTRA_BUNDLE";
+
+    /**
      * A String extra holding the package name of the mobile device management application that
      * will be set as the profile owner or device owner.
      *