Class ShadowDevicePolicyManager

    • Constructor Detail

      • ShadowDevicePolicyManager

        public ShadowDevicePolicyManager()
    • Method Detail

      • __constructor__

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

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

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

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

        @Implementation
        protected boolean isAdminActive​(ComponentName who)
      • addUserRestriction

        @Implementation(minSdk=21)
        protected void addUserRestriction​(ComponentName admin,
                                          String key)
      • clearUserRestriction

        @Implementation(minSdk=21)
        protected void clearUserRestriction​(ComponentName admin,
                                            String key)
      • setApplicationHidden

        @Implementation(minSdk=21)
        protected boolean setApplicationHidden​(ComponentName admin,
                                               String packageName,
                                               boolean hidden)
      • isApplicationHidden

        @Implementation(minSdk=21)
        protected boolean isApplicationHidden​(ComponentName admin,
                                              String packageName)
      • wasPackageEverHidden

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

        @Implementation(minSdk=21)
        protected void enableSystemApp​(ComponentName admin,
                                       String packageName)
      • wasSystemAppEnabled

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

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

        @Implementation(minSdk=21)
        protected boolean isUninstallBlocked​(ComponentName admin,
                                             String packageName)
      • getProfileOwnerNameAsUser

        @Implementation(minSdk=21)
        protected 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.
      • setProfileOwnerName

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

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

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

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

        @Implementation(minSdk=21)
        protected Bundle getApplicationRestrictions​(ComponentName admin,
                                                    String packageName)
      • getApplicationRestrictions

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

        @Implementation(minSdk=21)
        protected void setApplicationRestrictions​(ComponentName admin,
                                                  String packageName,
                                                  Bundle applicationRestrictions)
      • setApplicationRestrictions

        public void setApplicationRestrictions​(String packageName,
                                               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​(ComponentName admin,
                                                    String accountType,
                                                    boolean disabled)
      • getAccountTypesWithManagementDisabled

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

        @Implementation(minSdk=24)
        protected void setOrganizationName​(ComponentName admin,
                                           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 String[] setPackagesSuspended​(ComponentName admin,
                                                String[] packageNames,
                                                boolean suspended)
      • setOrganizationColor

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

        @Implementation(minSdk=24)
        protected CharSequence getOrganizationName​(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​(ComponentName admin)
      • setAutoTimeRequired

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

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

        @Implementation(minSdk=21)
        protected boolean setPermittedAccessibilityServices​(ComponentName admin,
                                                            List<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 List<String> getPermittedAccessibilityServices​(ComponentName admin)
      • setPermittedInputMethods

        @Implementation(minSdk=21)
        protected boolean setPermittedInputMethods​(ComponentName admin,
                                                   List<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 List<String> getPermittedInputMethods​(ComponentName admin)
      • setStorageEncryption

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

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

        @Implementation(minSdk=23)
        protected int getPermissionGrantState​(ComponentName admin,
                                              String packageName,
                                              String permission)
      • isPermissionGranted

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

        @Implementation(minSdk=23)
        protected boolean setPermissionGrantState​(ComponentName admin,
                                                  String packageName,
                                                  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​(ComponentName admin,
                                          int quality)
      • getPasswordQuality

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        public void setPasswordExpiration​(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​(ComponentName admin)
      • setMaximumTimeToLock

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

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

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

        @Implementation
        protected int getPasswordHistoryLength​(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()
      • activateResetToken

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

        @Implementation(minSdk=21)
        protected void clearPackagePersistentPreferredActivities​(ComponentName admin,
                                                                 String packageName)
      • setKeyguardDisabledFeatures

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

        @Implementation(minSdk=17)
        protected int getKeyguardDisabledFeatures​(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​(ComponentName admin,
                                           int usesPolicy)
      • setLockTaskPackages

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

        @Implementation(minSdk=21)
        protected String[] getLockTaskPackages​(ComponentName admin)
      • isLockTaskPermitted

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

        @Implementation(minSdk=26)
        protected void setAffiliationIds​(ComponentName admin,
                                         Set<String> ids)
      • getAffiliationIds

        @Implementation(minSdk=26)
        protected Set<String> getAffiliationIds​(ComponentName admin)
      • setPermissionPolicy

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

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

        public void grantPolicy​(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 SystemUpdatePolicy getSystemUpdatePolicy()
      • bindDeviceAdminServiceAsUser

        @Implementation(minSdk=26)
        protected boolean bindDeviceAdminServiceAsUser​(ComponentName admin,
                                                       Intent serviceIntent,
                                                       ServiceConnection conn,
                                                       int flags,
                                                       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​(ComponentName admin,
                                              CharSequence message)
      • setLongSupportMessage

        @Implementation(minSdk=24)
        protected void setLongSupportMessage​(ComponentName admin,
                                             CharSequence message)
      • isOrganizationOwnedDeviceWithManagedProfile

        @Implementation(minSdk=30)
        protected boolean isOrganizationOwnedDeviceWithManagedProfile()
        Returns the value stored using in the shadow, while the real method returns the value store on the device.

        The value can be set by setOrganizationOwnedDeviceWithManagedProfile(boolean) and is false by default.

      • getNearbyNotificationStreamingPolicy

        @Implementation(minSdk=31)
        protected int getNearbyNotificationStreamingPolicy()
      • setNearbyNotificationStreamingPolicy

        @Implementation(minSdk=31)
        protected void setNearbyNotificationStreamingPolicy​(int policy)
      • getNearbyAppStreamingPolicy

        @Implementation(minSdk=31)
        protected int getNearbyAppStreamingPolicy()
      • setNearbyAppStreamingPolicy

        @Implementation(minSdk=31)
        protected void setNearbyAppStreamingPolicy​(int policy)