diff --git a/core/api/current.txt b/core/api/current.txt index 29659cdef7ace..33a3013f52960 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -7629,6 +7629,7 @@ package android.app.admin { field public static final String EXTRA_PROVISIONING_MODE = "android.app.extra.PROVISIONING_MODE"; field public static final String EXTRA_PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT = "android.app.extra.PROVISIONING_SENSORS_PERMISSION_GRANT_OPT_OUT"; field public static final String EXTRA_PROVISIONING_SERIAL_NUMBER = "android.app.extra.PROVISIONING_SERIAL_NUMBER"; + field public static final String EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT = "android.app.extra.PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT"; field public static final String EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS = "android.app.extra.PROVISIONING_SKIP_EDUCATION_SCREENS"; field public static final String EXTRA_PROVISIONING_SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION"; field @Deprecated public static final String EXTRA_PROVISIONING_SKIP_USER_CONSENT = "android.app.extra.PROVISIONING_SKIP_USER_CONSENT"; @@ -7651,6 +7652,7 @@ package android.app.admin { field public static final String EXTRA_RESOURCE_ID = "android.app.extra.RESOURCE_ID"; field public static final String EXTRA_RESOURCE_TYPE_DRAWABLE = "android.app.extra.RESOURCE_TYPE_DRAWABLE"; field public static final String EXTRA_RESOURCE_TYPE_STRING = "android.app.extra.RESOURCE_TYPE_STRING"; + field public static final String EXTRA_RESULT_LAUNCH_INTENT = "android.app.extra.RESULT_LAUNCH_INTENT"; field public static final int FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY = 1; // 0x1 field public static final int FLAG_MANAGED_CAN_ACCESS_PARENT = 2; // 0x2 field public static final int FLAG_PARENT_CAN_ACCESS_MANAGED = 1; // 0x1 diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 3af71d54ad90d..32132b522ccea 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -1147,11 +1147,16 @@ package android.app.admin { field public static final String EXTRA_PROVISIONING_ORGANIZATION_NAME = "android.app.extra.PROVISIONING_ORGANIZATION_NAME"; field public static final String EXTRA_PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE = "android.app.extra.PROVISIONING_RETURN_BEFORE_POLICY_COMPLIANCE"; field public static final String EXTRA_PROVISIONING_ROLE_HOLDER_CUSTOM_USER_CONSENT_INTENT = "android.app.extra.PROVISIONING_ROLE_HOLDER_CUSTOM_USER_CONSENT_INTENT"; + field public static final String EXTRA_PROVISIONING_ROLE_HOLDER_EXTRAS_BUNDLE = "android.app.extra.PROVISIONING_ROLE_HOLDER_EXTRAS_BUNDLE"; + field public static final String EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER"; + field public static final String EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION = "android.app.extra.PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION"; + field public static final String EXTRA_PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM = "android.app.extra.PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM"; field public static final String EXTRA_PROVISIONING_SKIP_OWNERSHIP_DISCLAIMER = "android.app.extra.PROVISIONING_SKIP_OWNERSHIP_DISCLAIMER"; field public static final String EXTRA_PROVISIONING_SUPPORTED_MODES = "android.app.extra.PROVISIONING_SUPPORTED_MODES"; field public static final String EXTRA_PROVISIONING_SUPPORT_URL = "android.app.extra.PROVISIONING_SUPPORT_URL"; field public static final String EXTRA_PROVISIONING_TRIGGER = "android.app.extra.PROVISIONING_TRIGGER"; field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION"; + field public static final String EXTRA_ROLE_HOLDER_PROVISIONING_INITIATOR_PACKAGE = "android.app.extra.ROLE_HOLDER_PROVISIONING_INITIATOR_PACKAGE"; field public static final String EXTRA_ROLE_HOLDER_STATE = "android.app.extra.ROLE_HOLDER_STATE"; field public static final int FLAG_SUPPORTED_MODES_DEVICE_OWNER = 4; // 0x4 field public static final int FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED = 1; // 0x1 diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 71d4ab43db021..490ee0dfd5f18 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -719,6 +719,125 @@ public class DevicePolicyManager { public static final String EXTRA_PROVISIONING_ALLOW_OFFLINE = "android.app.extra.PROVISIONING_ALLOW_OFFLINE"; + /** + * A String extra holding a url that specifies the download location of the device manager + * role holder package. + * + *
This is only meant to be used in cases when a specific variant of the role holder package + * is needed (such as a debug variant). If not provided, the default variant of the device + * manager role holder package is downloaded. + * + *
Use in an intent with action {@link #ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE} + * or in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner + * provisioning via an NFC bump. + * + * @hide + */ + @SystemApi + public static final String EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION = + "android.app.extra.PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION"; + + /** + * A String extra holding the URL-safe base64 encoded SHA-256 checksum of any signature of the + * android package archive at the download location specified in {@link + * #EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION}. + * + *
The signatures of an android package archive can be obtained using + * {@link android.content.pm.PackageManager#getPackageArchiveInfo} with flag + * {@link android.content.pm.PackageManager#GET_SIGNING_CERTIFICATES}. + * + *
If {@link #EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION} is provided, it must + * be accompanied by this extra. The provided checksum must match the checksum of any signature + * of the file at the download location. If the checksum does not match an error will be shown + * to the user and the user will be asked to factory reset the device. + * + *
Use in an intent with action {@link #ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE} + * or in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner + * provisioning via an NFC bump. + * + * @hide + */ + @SystemApi + public static final String EXTRA_PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM = + "android.app.extra.PROVISIONING_ROLE_HOLDER_SIGNATURE_CHECKSUM"; + + /** + * A String extra holding a http cookie header which should be used in the http request to the + * url specified in {@link #EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_LOCATION}. + * + *
Use in an intent with action {@link #ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE} + * or in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner + * provisioning via an NFC bump. + * + * @hide + */ + @SystemApi + public static final String EXTRA_PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER = + "android.app.extra.PROVISIONING_ROLE_HOLDER_PACKAGE_DOWNLOAD_COOKIE_HEADER"; + + /** + * An extra of type {@link android.os.PersistableBundle} that allows the provisioning initiator + * to pass data to the device manager role holder. + * + *
The device manager role holder will receive this extra via the {@link + * #ACTION_ROLE_HOLDER_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE} intent. + * + *
The contents of this extra are up to the contract between the provisioning initiator + * and the device manager role holder. + * + *
Use in an intent with action {@link #ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE} + * or in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner + * provisioning via an NFC bump. + * + * @hide + */ + @SystemApi + public static final String EXTRA_PROVISIONING_ROLE_HOLDER_EXTRAS_BUNDLE = + "android.app.extra.PROVISIONING_ROLE_HOLDER_EXTRAS_BUNDLE"; + + /** + * A String extra containing the package name of the provisioning initiator. + * + *
Use in an intent with action {@link + * #ACTION_ROLE_HOLDER_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE}. + * + * @hide + */ + @SystemApi + public static final String EXTRA_ROLE_HOLDER_PROVISIONING_INITIATOR_PACKAGE = + "android.app.extra.ROLE_HOLDER_PROVISIONING_INITIATOR_PACKAGE"; + + /** + * An {@link Intent} result extra specifying the {@link Intent} to be launched after + * provisioning is finalized. + * + *
If {@link #EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT} is set to {@code false}, + * this result will be supplied as part of the result {@link Intent} for provisioning actions + * such as {@link #ACTION_PROVISION_MANAGED_PROFILE}. This result will also be supplied as + * part of the result {@link Intent} for the device manager role holder provisioning actions. + */ + public static final String EXTRA_RESULT_LAUNCH_INTENT = + "android.app.extra.RESULT_LAUNCH_INTENT"; + + /** + * A boolean extra that determines whether the provisioning flow should launch the resulting + * launch intent, if one is supplied by the device manager role holder via {@link + * #EXTRA_RESULT_LAUNCH_INTENT}. Default value is {@code false}. + * + *
If {@code true}, the resulting intent will be launched by the provisioning flow, if one + * is supplied by the device manager role holder. + * + *
If {@code false}, the resulting intent will be returned as {@link + * #EXTRA_RESULT_LAUNCH_INTENT} to the provisioning initiator, if one is supplied by the device + * manager role holder. It will be the responsibility of the provisioning initiator to launch + * this {@link Intent} after provisioning completes. + * + *
This extra is respected when provided via the provisioning intent actions such as {@link + * #ACTION_PROVISION_MANAGED_PROFILE}. + */ + public static final String EXTRA_PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT = + "android.app.extra.PROVISIONING_SHOULD_LAUNCH_RESULT_INTENT"; + /** * Action: Bugreport sharing with device owner has been accepted by the user. *