diff --git a/api/current.txt b/api/current.txt index e42913c57d986..8f7e305dfe199 100644 --- a/api/current.txt +++ b/api/current.txt @@ -6136,6 +6136,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"; diff --git a/api/system-current.txt b/api/system-current.txt index 873f0215d16c1..6a57e4888f76c 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6319,6 +6319,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"; diff --git a/api/test-current.txt b/api/test-current.txt index b8810c8e0f763..004350dd2eb20 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -6155,6 +6155,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"; diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 8c2749f5f2d12..e0ec1b111f026 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -159,6 +159,11 @@ public class DevicePolicyManager { * managed profile and the {@link #ACTION_MANAGED_PROFILE_PROVISIONED} broadcast is sent in * the primary profile. * + *

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. + * *

If provisioning fails, the managedProfile is removed so the device returns to its * previous state. * @@ -233,6 +238,10 @@ public class DevicePolicyManager { * {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE} is broadcast to the * device owner. * + *

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. + * *

If provisioning fails, the device is factory reset. * *

A result code of {@link android.app.Activity#RESULT_OK} implies that the synchronous part @@ -322,6 +331,10 @@ public class DevicePolicyManager { * {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE} is broadcast to the * device owner. * + *

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. + * *

If provisioning fails, the device is factory reset. * *

A result code of {@link android.app.Activity#RESULT_OK} implies that the synchronous part @@ -733,6 +746,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. + * + *

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.