diff --git a/api/current.txt b/api/current.txt index 36a843882f67f..994d9b4a4b4c8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -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"; diff --git a/api/system-current.txt b/api/system-current.txt index e4d53f0778f41..f72314cc4e10b 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -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"; diff --git a/api/test-current.txt b/api/test-current.txt index 1d583bb608059..d93dc5715b89f 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -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"; diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 538e52b970131..d53cfdecc9bb7 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -158,6 +158,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. * @@ -232,6 +237,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 @@ -321,6 +330,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 @@ -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. + * + *

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.