Class ShadowDevicePolicyManager


  • @Implements(android.app.admin.DevicePolicyManager.class)
    public class ShadowDevicePolicyManager
    extends java.lang.Object
    • Constructor Detail

      • ShadowDevicePolicyManager

        public ShadowDevicePolicyManager()
    • Method Detail

      • __constructor__

        @Implementation(maxSdk=23)
        protected void __constructor__​(android.content.Context context,
                                       android.os.Handler handler)
      • __constructor__

        @Implementation(minSdk=24,
                        maxSdk=25)
        protected void __constructor__​(android.content.Context context,
                                       boolean parentInstance)
      • __constructor__

        @Implementation(minSdk=26)
        protected void __constructor__​(android.content.Context context,
                                       android.app.admin.IDevicePolicyManager service)
      • isDeviceOwnerApp

        @Implementation(minSdk=18)
        protected boolean isDeviceOwnerApp​(java.lang.String packageName)
      • isProfileOwnerApp

        @Implementation(minSdk=21)
        protected boolean isProfileOwnerApp​(java.lang.String packageName)
      • isAdminActive

        @Implementation
        protected boolean isAdminActive​(android.content.ComponentName who)
      • getActiveAdmins

        @Implementation
        protected java.util.List<android.content.ComponentName> getActiveAdmins()
      • addUserRestriction

        @Implementation(minSdk=21)
        protected void addUserRestriction​(android.content.ComponentName admin,
                                          java.lang.String key)
      • clearUserRestriction

        @Implementation(minSdk=21)
        protected void clearUserRestriction​(android.content.ComponentName admin,
                                            java.lang.String key)
      • setApplicationHidden

        @Implementation(minSdk=21)
        protected boolean setApplicationHidden​(android.content.ComponentName admin,
                                               java.lang.String packageName,
                                               boolean hidden)
      • failSetApplicationHiddenFor

        public void failSetApplicationHiddenFor​(java.util.Collection<java.lang.String> packagesToFail)
        Set package names for witch DevicePolicyManager.setApplicationHidden(android.content.ComponentName, java.lang.String, boolean) should fail.
        Parameters:
        packagesToFail - collection of package names or null to clear the packages.
      • isApplicationHidden

        @Implementation(minSdk=21)
        protected boolean isApplicationHidden​(android.content.ComponentName admin,
                                              java.lang.String packageName)
      • wasPackageEverHidden

        public boolean wasPackageEverHidden​(java.lang.String packageName)
        Returns true if the given packageName was ever hidden.
      • enableSystemApp

        @Implementation(minSdk=21)
        protected void enableSystemApp​(android.content.ComponentName admin,
                                       java.lang.String packageName)
      • wasSystemAppEnabled

        public boolean wasSystemAppEnabled​(java.lang.String packageName)
        Returns true if the given packageName was a system app and was enabled.
      • setUninstallBlocked

        @Implementation(minSdk=21)
        protected void setUninstallBlocked​(android.content.ComponentName admin,
                                           java.lang.String packageName,
                                           boolean uninstallBlocked)
      • isUninstallBlocked

        @Implementation(minSdk=21)
        protected boolean isUninstallBlocked​(android.content.ComponentName admin,
                                             java.lang.String packageName)
      • getProfileOwnerNameAsUser

        @Implementation(minSdk=21)
        protected java.lang.String getProfileOwnerNameAsUser​(int userId)
        Returns the human-readable name of the profile owner for a user if set using setProfileOwnerName(int, java.lang.String), otherwise null.
      • setDeviceOwner

        public void setDeviceOwner​(android.content.ComponentName admin)
        Sets the admin as active admin and device owner.
        See Also:
        DevicePolicyManager.getDeviceOwner()
      • setProfileOwner

        public void setProfileOwner​(android.content.ComponentName admin)
        Sets the admin as active admin and profile owner.
        See Also:
        DevicePolicyManager.getProfileOwner()
      • setProfileOwnerName

        public void setProfileOwnerName​(int userId,
                                        java.lang.String name)
      • setActiveAdmin

        public void setActiveAdmin​(android.content.ComponentName componentName)
        Sets the given componentName as one of the active admins.
      • removeActiveAdmin

        @Implementation
        protected void removeActiveAdmin​(android.content.ComponentName admin)
      • clearProfileOwner

        @Implementation(minSdk=21)
        protected void clearProfileOwner​(android.content.ComponentName admin)
      • getApplicationRestrictions

        @Implementation(minSdk=21)
        protected android.os.Bundle getApplicationRestrictions​(android.content.ComponentName admin,
                                                               java.lang.String packageName)
      • getApplicationRestrictions

        public android.os.Bundle getApplicationRestrictions​(java.lang.String packageName)
        Returns all application restrictions of the packageName in a Bundle.
      • setApplicationRestrictions

        @Implementation(minSdk=21)
        protected void setApplicationRestrictions​(android.content.ComponentName admin,
                                                  java.lang.String packageName,
                                                  android.os.Bundle applicationRestrictions)
      • setApplicationRestrictions

        public void setApplicationRestrictions​(java.lang.String packageName,
                                               android.os.Bundle applicationRestrictions)
        Sets the application restrictions of the packageName.

        The new applicationRestrictions always completely overwrites any existing ones.

      • setAccountManagementDisabled

        @Implementation(minSdk=21)
        protected void setAccountManagementDisabled​(android.content.ComponentName admin,
                                                    java.lang.String accountType,
                                                    boolean disabled)
      • getAccountTypesWithManagementDisabled

        @Implementation(minSdk=21)
        protected java.lang.String[] getAccountTypesWithManagementDisabled()
      • setOrganizationName

        @Implementation(minSdk=24)
        protected void setOrganizationName​(android.content.ComponentName admin,
                                           java.lang.CharSequence name)
        Sets organization name.

        The API can only be called by profile owner since Android N and can be called by both of profile owner and device owner since Android O.

      • setPackagesSuspended

        @Implementation(minSdk=24)
        protected java.lang.String[] setPackagesSuspended​(android.content.ComponentName admin,
                                                          java.lang.String[] packageNames,
                                                          boolean suspended)
      • isPackageSuspended

        @Implementation(minSdk=24)
        protected boolean isPackageSuspended​(android.content.ComponentName admin,
                                             java.lang.String packageName)
                                      throws android.content.pm.PackageManager.NameNotFoundException
        Throws:
        android.content.pm.PackageManager.NameNotFoundException
      • setOrganizationColor

        @Implementation(minSdk=24)
        protected void setOrganizationColor​(android.content.ComponentName admin,
                                            int color)
      • getOrganizationName

        @Implementation(minSdk=24)
        protected java.lang.CharSequence getOrganizationName​(android.content.ComponentName admin)
        Returns organization name.

        The API can only be called by profile owner since Android N.

        Android framework has a hidden API for getting the organization name for device owner since Android O. This method, however, is extended to return the organization name for device owners too to make testing of setOrganizationName(ComponentName, CharSequence) easier for device owner cases.

      • getOrganizationColor

        @Implementation(minSdk=24)
        protected int getOrganizationColor​(android.content.ComponentName admin)
      • setAutoTimeRequired

        @Implementation(minSdk=21)
        protected void setAutoTimeRequired​(android.content.ComponentName admin,
                                           boolean required)
      • getAutoTimeRequired

        @Implementation(minSdk=21)
        protected boolean getAutoTimeRequired()
      • setPermittedAccessibilityServices

        @Implementation(minSdk=21)
        protected boolean setPermittedAccessibilityServices​(android.content.ComponentName admin,
                                                            java.util.List<java.lang.String> packageNames)
        Sets permitted accessibility services.

        The API can be called by either a profile or device owner.

        This method does not check already enabled non-system accessibility services, so will always set the restriction and return true.

      • getPermittedAccessibilityServices

        @Implementation(minSdk=21)
        protected java.util.List<java.lang.String> getPermittedAccessibilityServices​(android.content.ComponentName admin)
      • setPermittedInputMethods

        @Implementation(minSdk=21)
        protected boolean setPermittedInputMethods​(android.content.ComponentName admin,
                                                   java.util.List<java.lang.String> packageNames)
        Sets permitted input methods.

        The API can be called by either a profile or device owner.

        This method does not check already enabled non-system input methods, so will always set the restriction and return true.

      • getPermittedInputMethods

        @Implementation(minSdk=21)
        protected java.util.List<java.lang.String> getPermittedInputMethods​(android.content.ComponentName admin)
      • getStorageEncryptionStatus

        @Implementation
        protected int getStorageEncryptionStatus()
        Returns:
        the previously set status; default is DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED
        See Also:
        setStorageEncryptionStatus(int)
      • setStorageEncryptionStatus

        public void setStorageEncryptionStatus​(int status)
        Setter for DevicePolicyManager.getStorageEncryptionStatus().
      • setStorageEncryption

        @Implementation
        protected int setStorageEncryption​(android.content.ComponentName admin,
                                           boolean encrypt)
      • getStorageEncryption

        @Implementation
        protected boolean getStorageEncryption​(android.content.ComponentName admin)
      • getPermissionGrantState

        @Implementation(minSdk=23)
        protected int getPermissionGrantState​(android.content.ComponentName admin,
                                              java.lang.String packageName,
                                              java.lang.String permission)
      • isPermissionGranted

        public boolean isPermissionGranted​(java.lang.String packageName,
                                           java.lang.String permission)
      • setPermissionGrantState

        @Implementation(minSdk=23)
        protected boolean setPermissionGrantState​(android.content.ComponentName admin,
                                                  java.lang.String packageName,
                                                  java.lang.String permission,
                                                  int grantState)
      • lockNow

        @Implementation
        protected void lockNow()
      • wipeData

        @Implementation
        protected void wipeData​(int flags)
      • getWipeCalledTimes

        public long getWipeCalledTimes()
      • setPasswordQuality

        @Implementation
        protected void setPasswordQuality​(android.content.ComponentName admin,
                                          int quality)
      • getPasswordQuality

        @Implementation
        protected int getPasswordQuality​(android.content.ComponentName admin)
      • resetPassword

        @Implementation
        protected boolean resetPassword​(java.lang.String password,
                                        int flags)
      • resetPasswordWithToken

        @Implementation(minSdk=26)
        protected boolean resetPasswordWithToken​(android.content.ComponentName admin,
                                                 java.lang.String password,
                                                 byte[] token,
                                                 int flags)
      • isResetPasswordTokenActive

        @Implementation(minSdk=26)
        protected boolean isResetPasswordTokenActive​(android.content.ComponentName admin)
      • setResetPasswordToken

        @Implementation(minSdk=26)
        protected boolean setResetPasswordToken​(android.content.ComponentName admin,
                                                byte[] token)
      • setPasswordMinimumLength

        @Implementation
        protected void setPasswordMinimumLength​(android.content.ComponentName admin,
                                                int length)
      • getPasswordMinimumLength

        @Implementation
        protected int getPasswordMinimumLength​(android.content.ComponentName admin)
      • setPasswordMinimumLetters

        @Implementation
        protected void setPasswordMinimumLetters​(android.content.ComponentName admin,
                                                 int length)
      • getPasswordMinimumLetters

        @Implementation
        protected int getPasswordMinimumLetters​(android.content.ComponentName admin)
      • setPasswordMinimumLowerCase

        @Implementation
        protected void setPasswordMinimumLowerCase​(android.content.ComponentName admin,
                                                   int length)
      • getPasswordMinimumLowerCase

        @Implementation
        protected int getPasswordMinimumLowerCase​(android.content.ComponentName admin)
      • setPasswordMinimumUpperCase

        @Implementation
        protected void setPasswordMinimumUpperCase​(android.content.ComponentName admin,
                                                   int length)
      • getPasswordMinimumUpperCase

        @Implementation
        protected int getPasswordMinimumUpperCase​(android.content.ComponentName admin)
      • setPasswordMinimumNonLetter

        @Implementation
        protected void setPasswordMinimumNonLetter​(android.content.ComponentName admin,
                                                   int length)
      • getPasswordMinimumNonLetter

        @Implementation
        protected int getPasswordMinimumNonLetter​(android.content.ComponentName admin)
      • setPasswordMinimumNumeric

        @Implementation
        protected void setPasswordMinimumNumeric​(android.content.ComponentName admin,
                                                 int length)
      • getPasswordMinimumNumeric

        @Implementation
        protected int getPasswordMinimumNumeric​(android.content.ComponentName admin)
      • setPasswordMinimumSymbols

        @Implementation
        protected void setPasswordMinimumSymbols​(android.content.ComponentName admin,
                                                 int length)
      • getPasswordMinimumSymbols

        @Implementation
        protected int getPasswordMinimumSymbols​(android.content.ComponentName admin)
      • setMaximumFailedPasswordsForWipe

        @Implementation
        protected void setMaximumFailedPasswordsForWipe​(android.content.ComponentName admin,
                                                        int num)
      • getMaximumFailedPasswordsForWipe

        @Implementation
        protected int getMaximumFailedPasswordsForWipe​(android.content.ComponentName admin)
      • setCameraDisabled

        @Implementation
        protected void setCameraDisabled​(android.content.ComponentName admin,
                                         boolean disabled)
      • getCameraDisabled

        @Implementation
        protected boolean getCameraDisabled​(android.content.ComponentName admin)
      • setPasswordExpirationTimeout

        @Implementation
        protected void setPasswordExpirationTimeout​(android.content.ComponentName admin,
                                                    long timeout)
      • getPasswordExpirationTimeout

        @Implementation
        protected long getPasswordExpirationTimeout​(android.content.ComponentName admin)
      • setPasswordExpiration

        public void setPasswordExpiration​(android.content.ComponentName admin,
                                          long timeout)
        Sets the password expiration time for a particular admin.
        Parameters:
        admin - which DeviceAdminReceiver this request is associated with.
        timeout - the password expiration time, in milliseconds since epoch.
      • getPasswordExpiration

        @Implementation
        protected long getPasswordExpiration​(android.content.ComponentName admin)
      • setMaximumTimeToLock

        @Implementation
        protected void setMaximumTimeToLock​(android.content.ComponentName admin,
                                            long timeMs)
      • getMaximumTimeToLock

        @Implementation
        protected long getMaximumTimeToLock​(android.content.ComponentName admin)
      • setPasswordHistoryLength

        @Implementation
        protected void setPasswordHistoryLength​(android.content.ComponentName admin,
                                                int length)
      • getPasswordHistoryLength

        @Implementation
        protected int getPasswordHistoryLength​(android.content.ComponentName admin)
      • setActivePasswordSufficient

        public void setActivePasswordSufficient​(boolean sufficient)
        Sets if the password meets the current requirements.
        Parameters:
        sufficient - indicates the password meets the current requirements
      • isActivePasswordSufficient

        @Implementation
        protected boolean isActivePasswordSufficient()
      • setDeviceProvisioned

        public void setDeviceProvisioned​(boolean isProvisioned)
        Sets whether the device is provisioned.
      • isDeviceProvisioned

        @Implementation(minSdk=26)
        protected boolean isDeviceProvisioned()
      • setDeviceProvisioningConfigApplied

        @Implementation(minSdk=26)
        protected void setDeviceProvisioningConfigApplied()
      • isDeviceProvisioningConfigApplied

        @Implementation(minSdk=26)
        protected boolean isDeviceProvisioningConfigApplied()
      • setPasswordComplexity

        public void setPasswordComplexity​(int passwordComplexity)
        Sets the password complexity.
      • getPasswordComplexity

        @Implementation(minSdk=29)
        protected int getPasswordComplexity()
      • getLastSetPassword

        public java.lang.String getLastSetPassword()
        Retrieves last password set through DevicePolicyManager.resetPassword(java.lang.String, int) or DevicePolicyManager.resetPasswordWithToken(android.content.ComponentName, java.lang.String, byte[], int).
      • activateResetToken

        public boolean activateResetToken​(android.content.ComponentName admin)
        Activates reset token for given admin.
        Parameters:
        admin - Which DeviceAdminReceiver this request is associated with.
        Returns:
        if the activation state changed.
        Throws:
        java.lang.IllegalArgumentException - if there is no token set for this admin.
      • addPersistentPreferredActivity

        @Implementation(minSdk=21)
        protected void addPersistentPreferredActivity​(android.content.ComponentName admin,
                                                      android.content.IntentFilter filter,
                                                      android.content.ComponentName activity)
      • clearPackagePersistentPreferredActivities

        @Implementation(minSdk=21)
        protected void clearPackagePersistentPreferredActivities​(android.content.ComponentName admin,
                                                                 java.lang.String packageName)
      • setKeyguardDisabledFeatures

        @Implementation(minSdk=17)
        protected void setKeyguardDisabledFeatures​(android.content.ComponentName admin,
                                                   int which)
      • getKeyguardDisabledFeatures

        @Implementation(minSdk=17)
        protected int getKeyguardDisabledFeatures​(android.content.ComponentName admin)
      • setUserProvisioningState

        public void setUserProvisioningState​(int state)
        Sets the user provisioning state.
        Parameters:
        state - to store provisioning state
      • getUserProvisioningState

        @Implementation(minSdk=24)
        protected int getUserProvisioningState()
        Returns:
        Returns the provisioning state for the current user.
      • hasGrantedPolicy

        @Implementation
        protected boolean hasGrantedPolicy​(android.content.ComponentName admin,
                                           int usesPolicy)
      • setLockTaskPackages

        @Implementation(minSdk=21)
        protected void setLockTaskPackages​(android.content.ComponentName admin,
                                           java.lang.String[] packages)
      • getLockTaskPackages

        @Implementation(minSdk=21)
        protected java.lang.String[] getLockTaskPackages​(android.content.ComponentName admin)
      • isLockTaskPermitted

        @Implementation(minSdk=21)
        protected boolean isLockTaskPermitted​(java.lang.String pkg)
      • setAffiliationIds

        @Implementation(minSdk=26)
        protected void setAffiliationIds​(android.content.ComponentName admin,
                                         java.util.Set<java.lang.String> ids)
      • getAffiliationIds

        @Implementation(minSdk=26)
        protected java.util.Set<java.lang.String> getAffiliationIds​(android.content.ComponentName admin)
      • setPermissionPolicy

        @Implementation(minSdk=23)
        protected void setPermissionPolicy​(android.content.ComponentName admin,
                                           int policy)
      • getPermissionPolicy

        @Implementation(minSdk=23)
        protected int getPermissionPolicy​(android.content.ComponentName admin)
      • grantPolicy

        public void grantPolicy​(android.content.ComponentName admin,
                                int usesPolicy)
        Grants a particular device policy for an active ComponentName.
        Parameters:
        admin - the ComponentName which DeviceAdminReceiver this request is associated with. Must be an active administrator, or an exception will be thrown. This value must never be null.
        usesPolicy - the uses-policy to check
      • getSystemUpdatePolicy

        @Implementation(minSdk=23)
        protected android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy()
      • setSystemUpdatePolicy

        @Implementation(minSdk=23)
        protected void setSystemUpdatePolicy​(android.content.ComponentName admin,
                                             android.app.admin.SystemUpdatePolicy policy)
      • bindDeviceAdminServiceAsUser

        @Implementation(minSdk=26)
        protected boolean bindDeviceAdminServiceAsUser​(android.content.ComponentName admin,
                                                       android.content.Intent serviceIntent,
                                                       android.content.ServiceConnection conn,
                                                       int flags,
                                                       android.os.UserHandle targetUser)
        Bind to the same package in another user.

        This validates that the targetUser is one from getBindDeviceAdminTargetUsers(ComponentName) but does not actually bind to a different user, instead binding to the same user.

        It also does not validate the service being bound to.

      • setShortSupportMessage

        @Implementation(minSdk=24)
        protected void setShortSupportMessage​(android.content.ComponentName admin,
                                              java.lang.CharSequence message)
      • getShortSupportMessage

        @Implementation(minSdk=24)
        protected java.lang.CharSequence getShortSupportMessage​(android.content.ComponentName admin)
      • setLongSupportMessage

        @Implementation(minSdk=24)
        protected void setLongSupportMessage​(android.content.ComponentName admin,
                                             java.lang.CharSequence message)
      • getLongSupportMessage

        @Implementation(minSdk=24)
        protected java.lang.CharSequence getLongSupportMessage​(android.content.ComponentName admin)