blob: a457b5fa3937b990df7b9238a7926d78389a9754 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.app.admin;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.content.pm.PackageManager;
import android.util.AndroidException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Thrown to indicate a failure during {@link DevicePolicyManager#provisionFullyManagedDevice} and
* {@link DevicePolicyManager#createAndProvisionManagedProfile}.
*
* @hide
*
*/
@SystemApi
public class ProvisioningException extends AndroidException {
/**
* Service-specific error code for {@link DevicePolicyManager#provisionFullyManagedDevice} and
* {@link DevicePolicyManager#createAndProvisionManagedProfile}:
* Indicates a generic failure.
*/
public static final int ERROR_UNKNOWN = 0;
/**
* Service-specific error code for {@link DevicePolicyManager#provisionFullyManagedDevice} and
* {@link DevicePolicyManager#createAndProvisionManagedProfile}:
* Indicates the call to {@link DevicePolicyManager#checkProvisioningPrecondition} returned an
* error code.
*/
public static final int ERROR_PRE_CONDITION_FAILED = 1;
/**
* Service-specific error code for {@link DevicePolicyManager#createAndProvisionManagedProfile}:
* Indicates that the profile creation failed.
*/
public static final int ERROR_PROFILE_CREATION_FAILED = 2;
/**
* Service-specific error code for {@link DevicePolicyManager#createAndProvisionManagedProfile}:
* Indicates the call to {@link PackageManager#installExistingPackageAsUser} has failed.
*/
public static final int ERROR_ADMIN_PACKAGE_INSTALLATION_FAILED = 3;
/**
* Service-specific error code for {@link DevicePolicyManager#createAndProvisionManagedProfile}:
* Indicates that setting the profile owner failed.
*/
public static final int ERROR_SETTING_PROFILE_OWNER_FAILED = 4;
/**
* Service-specific error code for {@link DevicePolicyManager#createAndProvisionManagedProfile}:
* Indicates that starting the newly created profile has failed.
*/
public static final int ERROR_STARTING_PROFILE_FAILED = 5;
/**
* Service-specific error code for {@link DevicePolicyManager#provisionFullyManagedDevice}:
* Indicates that removing the non required apps have failed.
*/
public static final int ERROR_REMOVE_NON_REQUIRED_APPS_FAILED = 6;
/**
* Service-specific error code for {@link DevicePolicyManager#provisionFullyManagedDevice}:
* Indicates that setting the device owner failed.
*/
public static final int ERROR_SET_DEVICE_OWNER_FAILED = 7;
/**
* Service-specific error codes for {@link DevicePolicyManager#createAndProvisionManagedProfile}
* and {@link DevicePolicyManager#provisionFullyManagedDevice} indicating all the errors
* during provisioning.
*
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = { "ERROR_" }, value = {
ERROR_UNKNOWN, ERROR_PRE_CONDITION_FAILED,
ERROR_PROFILE_CREATION_FAILED,
ERROR_ADMIN_PACKAGE_INSTALLATION_FAILED,
ERROR_SETTING_PROFILE_OWNER_FAILED,
ERROR_STARTING_PROFILE_FAILED,
ERROR_REMOVE_NON_REQUIRED_APPS_FAILED,
ERROR_SET_DEVICE_OWNER_FAILED
})
public @interface ProvisioningError {}
private final @ProvisioningError int mProvisioningError;
/**
* Constructs a {@link ProvisioningException}.
*
* @param cause the cause
* @param provisioningError the error code
*/
public ProvisioningException(@NonNull Exception cause,
@ProvisioningError int provisioningError) {
this(cause, provisioningError, /* errorMessage= */ null);
}
/**
* Constructs a {@link ProvisioningException}.
*
* @param cause the cause
* @param provisioningError the error code
* @param errorMessage a {@code String} error message that give a more specific
* description of the exception; can be {@code null}
*/
public ProvisioningException(@NonNull Exception cause,
@ProvisioningError int provisioningError,
@Nullable String errorMessage) {
super(errorMessage, cause);
mProvisioningError = provisioningError;
}
/**
* Returns the provisioning error specified at construction time.
*/
public @ProvisioningError int getProvisioningError() {
return mProvisioningError;
}
}