1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.app.admin;
18 
19 import static android.app.admin.flags.Flags.FLAG_POLICY_ENGINE_MIGRATION_V2_ENABLED;
20 import static android.app.admin.flags.Flags.FLAG_SECURITY_LOG_V2_ENABLED;
21 
22 import android.annotation.FlaggedApi;
23 import android.annotation.NonNull;
24 import android.annotation.SystemApi;
25 import android.annotation.TestApi;
26 import android.os.UserManager;
27 
28 import java.util.Objects;
29 
30 /**
31  * Class containing identifiers for policy APIs in {@link DevicePolicyManager}, for example they
32  * will be passed in {@link PolicyUpdateReceiver#onPolicySetResult} and
33  * {@link PolicyUpdateReceiver#onPolicyChanged} to communicate updates of a certain policy back
34  * to the admin.
35  */
36 public final class DevicePolicyIdentifiers {
37 
DevicePolicyIdentifiers()38     private DevicePolicyIdentifiers() {}
39 
40     /**
41      * String identifier for {@link DevicePolicyManager#setAutoTimeZoneEnabled}.
42      */
43     public static final String AUTO_TIMEZONE_POLICY = "autoTimezone";
44 
45     /**
46      * String identifier for {@link DevicePolicyManager#setPermissionGrantState}.
47      */
48     public static final String PERMISSION_GRANT_POLICY = "permissionGrant";
49 
50     /**
51      * String identifier for {@link DevicePolicyManager#setSecurityLoggingEnabled}.
52      */
53     @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
54     public static final String SECURITY_LOGGING_POLICY = "securityLogging";
55 
56     /**
57      * String identifier for {@link DevicePolicyManager#setAuditLogEnabled}.
58      *
59      * @hide
60      */
61     @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
62     @SystemApi
63     public static final String AUDIT_LOGGING_POLICY = "auditLogging";
64 
65     /**
66      * String identifier for {@link DevicePolicyManager#setLockTaskPackages}.
67      */
68     public static final String LOCK_TASK_POLICY = "lockTask";
69 
70     /**
71      * String identifier for {@link DevicePolicyManager#setUserControlDisabledPackages}.
72      */
73     public static final String USER_CONTROL_DISABLED_PACKAGES_POLICY =
74             "userControlDisabledPackages";
75 
76     /**
77      * String identifier for {@link DevicePolicyManager#addPersistentPreferredActivity}.
78      */
79     public static final String PERSISTENT_PREFERRED_ACTIVITY_POLICY =
80             "persistentPreferredActivity";
81 
82     /**
83      * String identifier for {@link DevicePolicyManager#setUninstallBlocked}.
84      */
85     public static final String PACKAGE_UNINSTALL_BLOCKED_POLICY = "packageUninstallBlocked";
86 
87     /**
88      * String identifier for {@link DevicePolicyManager#setApplicationRestrictions}.
89      */
90     public static final String APPLICATION_RESTRICTIONS_POLICY = "applicationRestrictions";
91 
92     /**
93      * String identifier for {@link DevicePolicyManager#setResetPasswordToken}.
94      */
95     public static final String RESET_PASSWORD_TOKEN_POLICY = "resetPasswordToken";
96 
97     /**
98      * String identifier for {@link DevicePolicyManager#setAccountManagementDisabled}.
99      */
100     public static final String ACCOUNT_MANAGEMENT_DISABLED_POLICY = "accountManagementDisabled";
101 
102     /**
103      * String identifier for {@link DevicePolicyManager#setApplicationHidden}.
104      */
105     public static final String APPLICATION_HIDDEN_POLICY = "applicationHidden";
106 
107     /**
108      * String identifier for {@link DevicePolicyManager#setCameraDisabled}.
109      */
110     public static final String CAMERA_DISABLED_POLICY = "cameraDisabled";
111 
112     /**
113      * String identifier for {@link DevicePolicyManager#setStatusBarDisabled}.
114      */
115     public static final String STATUS_BAR_DISABLED_POLICY = "statusBarDisabled";
116 
117     /**
118      * String identifier for {@link DevicePolicyManager#setPackagesSuspended}.
119      */
120     public static final String PACKAGES_SUSPENDED_POLICY = "packagesSuspended";
121 
122     /**
123      * String identifier for {@link DevicePolicyManager#setKeyguardDisabledFeatures}.
124      */
125     public static final String KEYGUARD_DISABLED_FEATURES_POLICY = "keyguardDisabledFeatures";
126 
127     /**
128      * String identifier for {@link DevicePolicyManager#setAutoTimeEnabled}.
129      */
130     public static final String AUTO_TIME_POLICY = "autoTime";
131 
132     /**
133      * String identifier for {@link DevicePolicyManager#setBackupServiceEnabled}.
134      */
135     public static final String BACKUP_SERVICE_POLICY = "backupService";
136 
137     /**
138      * String identifier for {@link DevicePolicyManager#setPermittedInputMethods}.
139      *
140      * @hide
141      */
142     @TestApi
143     public static final String PERMITTED_INPUT_METHODS_POLICY = "permittedInputMethods";
144 
145     /**
146      * String identifier for {@link DevicePolicyManager#setPersonalAppsSuspended}.
147      *
148      * @hide
149      */
150     @TestApi
151     public static final String PERSONAL_APPS_SUSPENDED_POLICY = "personalAppsSuspended";
152 
153     /**
154      * String identifier for {@link DevicePolicyManager#setScreenCaptureDisabled}.
155      *
156      * @hide
157      */
158     @TestApi
159     public static final String SCREEN_CAPTURE_DISABLED_POLICY = "screenCaptureDisabled";
160 
161     /**
162      * String identifier for {@link DevicePolicyManager#setTrustAgentConfiguration}.
163      *
164      * @hide
165      */
166     public static final String TRUST_AGENT_CONFIGURATION_POLICY = "trustAgentConfiguration";
167 
168     /**
169      * String identifier for {@link DevicePolicyManager#addCrossProfileIntentFilter}.
170      *
171      * @hide
172      */
173     public static final String CROSS_PROFILE_INTENT_FILTER_POLICY = "crossProfileIntentFilter";
174 
175     /**
176      * String identifier for {@link DevicePolicyManager#addCrossProfileWidgetProvider}.
177      *
178      * @hide
179      */
180     public static final String CROSS_PROFILE_WIDGET_PROVIDER_POLICY = "crossProfileWidgetProvider";
181 
182     /**
183      * String identifier for {@link DevicePolicyManager#setContentProtectionPolicy}.
184      */
185     @FlaggedApi(android.view.contentprotection.flags.Flags.FLAG_MANAGE_DEVICE_POLICY_ENABLED)
186     public static final String CONTENT_PROTECTION_POLICY = "contentProtection";
187 
188     /**
189      * String identifier for {@link DevicePolicyManager#setUsbDataSignalingEnabled}.
190      */
191     @FlaggedApi(FLAG_POLICY_ENGINE_MIGRATION_V2_ENABLED)
192     public static final String USB_DATA_SIGNALING_POLICY = "usbDataSignaling";
193 
194     /**
195      * String identifier for {@link DevicePolicyManager#setRequiredPasswordComplexity}.
196      */
197     @FlaggedApi(FLAG_POLICY_ENGINE_MIGRATION_V2_ENABLED)
198     public static final String PASSWORD_COMPLEXITY_POLICY = "passwordComplexity";
199 
200     /**
201      * @hide
202      */
203     public static final String USER_RESTRICTION_PREFIX = "userRestriction_";
204 
205     /**
206      * Returns a string identifier for the provided user restrictions, see
207      * {@link DevicePolicyManager#addUserRestriction} and {@link UserManager} for the list of
208      * available restrictions.
209      */
210     @NonNull
getIdentifierForUserRestriction( @serManager.UserRestrictionKey @onNull String restriction)211     public static String getIdentifierForUserRestriction(
212             @UserManager.UserRestrictionKey @NonNull String restriction) {
213         Objects.requireNonNull(restriction);
214         return USER_RESTRICTION_PREFIX + restriction;
215     }
216 }
217