Add provisioning successful intent

Add a new activity intent action which will be launched after
provisioning has successfully completed.

Currently when provisioning is done we junt send an ordered broadcast
for PO and a normal brodcast for DO case. This results in HOME screen
being launched for 2 sec. To remove this jank we have introduced a
new intent action which can be directly received by the DPC in their
post provisioning activity.

Test: b/33138551, this bug tracks the cts coverage for the new action.

Bug: 30956199
Change-Id: I889b0cec74799bb7be93de48d46d5da68f17be92
This commit is contained in:
Mahaver Chopra
2016-11-01 21:25:59 +00:00
parent 88dea2dd23
commit 3c58cfe2d9
4 changed files with 32 additions and 0 deletions

View File

@@ -6116,6 +6116,7 @@ package android.app.admin {
field public static final java.lang.String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
field public static final java.lang.String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
field public static final java.lang.String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
field public static final java.lang.String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
field public static final java.lang.String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
field public static final java.lang.String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
field public static final java.lang.String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";

View File

@@ -6289,6 +6289,7 @@ package android.app.admin {
field public static final java.lang.String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
field public static final java.lang.String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
field public static final java.lang.String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
field public static final java.lang.String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
field public static final java.lang.String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
field public static final java.lang.String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
field public static final java.lang.String ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE = "android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE";

View File

@@ -6125,6 +6125,7 @@ package android.app.admin {
field public static final java.lang.String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
field public static final java.lang.String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
field public static final java.lang.String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
field public static final java.lang.String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
field public static final java.lang.String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
field public static final java.lang.String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
field public static final java.lang.String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";

View File

@@ -158,6 +158,11 @@ public class DevicePolicyManager {
* managed profile and the {@link #ACTION_MANAGED_PROFILE_PROVISIONED} broadcast is sent in
* the primary profile.
*
* <p>From version {@link android.os.Build.VERSION_CODES#O}, when managed provisioning has
* completed, along with the above broadcast, activity intent
* {@link #ACTION_PROVISIONING_SUCCESSFUL} will also be sent to the application specified in
* the provisioning intent.
*
* <p>If provisioning fails, the managedProfile is removed so the device returns to its
* previous state.
*
@@ -232,6 +237,10 @@ public class DevicePolicyManager {
* {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE} is broadcast to the
* device owner.
*
* <p>From version {@link android.os.Build.VERSION_CODES#O}, when device owner provisioning has
* completed, along with the above broadcast, activity intent
* {@link #ACTION_PROVISIONING_SUCCESSFUL} will also be sent to the device owner.
*
* <p>If provisioning fails, the device is factory reset.
*
* <p>A result code of {@link android.app.Activity#RESULT_OK} implies that the synchronous part
@@ -321,6 +330,10 @@ public class DevicePolicyManager {
* {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE} is broadcast to the
* device owner.
*
* <p>From version {@link android.os.Build.VERSION_CODES#O}, when device owner provisioning has
* completed, along with the above broadcast, activity intent
* {@link #ACTION_PROVISIONING_SUCCESSFUL} will also be sent to the device owner.
*
* <p>If provisioning fails, the device is factory reset.
*
* <p>A result code of {@link android.app.Activity#RESULT_OK} implies that the synchronous part
@@ -732,6 +745,22 @@ public class DevicePolicyManager {
public static final String ACTION_MANAGED_PROFILE_PROVISIONED
= "android.app.action.MANAGED_PROFILE_PROVISIONED";
/**
* Activity action: This activity action is sent to indicate that provisioning of a managed
* profile or managed device has completed successfully. It'll be sent at the same time as
* {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE} broadcast but this will be
* delivered faster as it's an activity intent.
*
* <p>The intent is only sent to the application on the profile that requested provisioning. In
* the device owner case the profile is the primary user.
*
* @see #ACTION_PROVISION_MANAGED_PROFILE
* @see #ACTION_PROVISION_MANAGED_DEVICE
*/
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_PROVISIONING_SUCCESSFUL =
"android.app.action.PROVISIONING_SUCCESSFUL";
/**
* A boolean extra indicating whether device encryption can be skipped as part of device owner
* or managed profile provisioning.