Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8ec4706 authored by Jim Miller's avatar Jim Miller
Browse files

Update DevicePolicyManager with ability to disable keyguard widgets

Change-Id: I5876e9e180b2a995aaa355fbbb2b67cebb86104d
parent d2a8df95
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -4179,6 +4179,7 @@ package android.app.admin {
    field public static final android.os.Parcelable.Creator CREATOR;
    field public static final int USES_ENCRYPTED_STORAGE = 7; // 0x7
    field public static final int USES_POLICY_DISABLE_CAMERA = 8; // 0x8
    field public static final int USES_POLICY_DISABLE_KEYGUARD_WIDGETS = 9; // 0x9
    field public static final int USES_POLICY_EXPIRE_PASSWORD = 6; // 0x6
    field public static final int USES_POLICY_FORCE_LOCK = 3; // 0x3
    field public static final int USES_POLICY_LIMIT_PASSWORD = 0; // 0x0
@@ -4214,6 +4215,7 @@ package android.app.admin {
    method public java.util.List<android.content.ComponentName> getActiveAdmins();
    method public boolean getCameraDisabled(android.content.ComponentName);
    method public int getCurrentFailedPasswordAttempts();
    method public int getKeyguardWidgetsDisabled(android.content.ComponentName);
    method public int getMaximumFailedPasswordsForWipe(android.content.ComponentName);
    method public long getMaximumTimeToLock(android.content.ComponentName);
    method public long getPasswordExpiration(android.content.ComponentName);
@@ -4237,6 +4239,7 @@ package android.app.admin {
    method public void removeActiveAdmin(android.content.ComponentName);
    method public boolean resetPassword(java.lang.String, int);
    method public void setCameraDisabled(android.content.ComponentName, boolean);
    method public void setKeyguardWidgetsDisabled(android.content.ComponentName, int);
    method public void setMaximumFailedPasswordsForWipe(android.content.ComponentName, int);
    method public void setMaximumTimeToLock(android.content.ComponentName, long);
    method public void setPasswordExpirationTimeout(android.content.ComponentName, long);
@@ -4260,6 +4263,8 @@ package android.app.admin {
    field public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0; // 0x0
    field public static final java.lang.String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
    field public static final java.lang.String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
    field public static final int KEYGUARD_DISABLE_WIDGETS_ALL = 2147483647; // 0x7fffffff
    field public static final int KEYGUARD_DISABLE_WIDGETS_NONE = 0; // 0x0
    field public static final int PASSWORD_QUALITY_ALPHABETIC = 262144; // 0x40000
    field public static final int PASSWORD_QUALITY_ALPHANUMERIC = 327680; // 0x50000
    field public static final int PASSWORD_QUALITY_BIOMETRIC_WEAK = 32768; // 0x8000
+53 −41
Original line number Diff line number Diff line
@@ -138,6 +138,14 @@ public final class DeviceAdminInfo implements Parcelable {
     */
    public static final int USES_POLICY_DISABLE_CAMERA = 8;

    /**
     * A type of policy that this device admin can use: disables use of keyguard widgets.
     *
     * <p>To control this policy, the device admin must have a "disable-keyguard-widgets"
     * tag in the "uses-policies" section of its meta-data.
     */
    public static final int USES_POLICY_DISABLE_KEYGUARD_WIDGETS = 9;

    /** @hide */
    public static class PolicyInfo {
        public final int ident;
@@ -185,6 +193,10 @@ public final class DeviceAdminInfo implements Parcelable {
        sPoliciesDisplayOrder.add(new PolicyInfo(USES_POLICY_DISABLE_CAMERA, "disable-camera",
                com.android.internal.R.string.policylab_disableCamera,
                com.android.internal.R.string.policydesc_disableCamera));
        sPoliciesDisplayOrder.add(new PolicyInfo(
                USES_POLICY_DISABLE_KEYGUARD_WIDGETS, "disable-keyguard-widgets",
                com.android.internal.R.string.policylab_disableKeyguardWidgets,
                com.android.internal.R.string.policydesc_disableKeyguardWidgets));

        for (int i=0; i<sPoliciesDisplayOrder.size(); i++) {
            PolicyInfo pi = sPoliciesDisplayOrder.get(i);
+50 −0
Original line number Diff line number Diff line
@@ -1154,6 +1154,16 @@ public class DevicePolicyManager {
    public static final String ACTION_START_ENCRYPTION
            = "android.app.action.START_ENCRYPTION";

    /**
     * Widgets are enabled in keyguard
     */
    public static final int KEYGUARD_DISABLE_WIDGETS_NONE = 0;

    /**
     * Disable all keyguard widgets
     */
    public static final int KEYGUARD_DISABLE_WIDGETS_ALL = 0x7fffffff;

    /**
     * Called by an application that is administering the device to
     * request that the storage system be encrypted.
@@ -1283,6 +1293,46 @@ public class DevicePolicyManager {
        return false;
    }

    /**
     * Called by an application that is administering the device to disable adding widgets to
     * keyguard.  After setting this, keyguard widgets will be disabled according to the state
     * provided.
     *
     * <p>The calling device admin must have requested
     * {@link DeviceAdminInfo#USES_POLICY_DISABLE_KEYGUARD_WIDGETS} to be able to call
     * this method; if it has not, a security exception will be thrown.
     *
     * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
     * @param which {@link DevicePolicyManager#KEYGUARD_DISABLE_WIDGETS_ALL} or
     * {@link DevicePolicyManager#KEYGUARD_DISABLE_WIDGETS_NONE} (the default).
     */
    public void setKeyguardWidgetsDisabled(ComponentName admin, int which) {
        if (mService != null) {
            try {
                mService.setKeyguardWidgetsDisabled(admin, which);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed talking with device policy service", e);
            }
        }
    }

    /**
     * Determine whether or not widgets have been disabled in keyguard either by the current
     * admin, if specified, or all admins.
     * @param admin The name of the admin component to check, or null to check if any admins
     * have disabled widgets in keyguard.
     */
    public int getKeyguardWidgetsDisabled(ComponentName admin) {
        if (mService != null) {
            try {
                return mService.getKeyguardWidgetsDisabled(admin);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed talking with device policy service", e);
            }
        }
        return KEYGUARD_DISABLE_WIDGETS_NONE;
    }

    /**
     * @hide
     */
+10 −7
Original line number Diff line number Diff line
@@ -82,6 +82,9 @@ interface IDevicePolicyManager {
    void setCameraDisabled(in ComponentName who, boolean disabled);
    boolean getCameraDisabled(in ComponentName who);

    void setKeyguardWidgetsDisabled(in ComponentName who, int which);
    int getKeyguardWidgetsDisabled(in ComponentName who);

    void setActiveAdmin(in ComponentName policyReceiver, boolean refreshing);
    boolean isAdminActive(in ComponentName policyReceiver);
    List<ComponentName> getActiveAdmins();
+2 −0
Original line number Diff line number Diff line
@@ -710,6 +710,7 @@
  <java-symbol type="string" name="policydesc_setGlobalProxy" />
  <java-symbol type="string" name="policydesc_watchLogin" />
  <java-symbol type="string" name="policydesc_wipeData" />
  <java-symbol type="string" name="policydesc_disableKeyguardWidgets" />
  <java-symbol type="string" name="policylab_disableCamera" />
  <java-symbol type="string" name="policylab_encryptedStorage" />
  <java-symbol type="string" name="policylab_expirePassword" />
@@ -719,6 +720,7 @@
  <java-symbol type="string" name="policylab_setGlobalProxy" />
  <java-symbol type="string" name="policylab_watchLogin" />
  <java-symbol type="string" name="policylab_wipeData" />
  <java-symbol type="string" name="policylab_disableKeyguardWidgets" />
  <java-symbol type="string" name="postalTypeCustom" />
  <java-symbol type="string" name="postalTypeHome" />
  <java-symbol type="string" name="postalTypeOther" />
Loading