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 android.annotation.NonNull;
20 import android.annotation.TestApi;
21 import android.os.UserManager;
22 
23 import java.util.Objects;
24 
25 /**
26  * Class containing identifiers for policy APIs in {@link DevicePolicyManager}, for example they
27  * will be passed in {@link PolicyUpdateReceiver#onPolicySetResult} and
28  * {@link PolicyUpdateReceiver#onPolicyChanged} to communicate updates of a certain policy back
29  * to the admin.
30  */
31 public final class DevicePolicyIdentifiers {
32 
DevicePolicyIdentifiers()33     private DevicePolicyIdentifiers() {}
34 
35     /**
36      * String identifier for {@link DevicePolicyManager#setAutoTimeZoneEnabled}.
37      */
38     public static final String AUTO_TIMEZONE_POLICY = "autoTimezone";
39 
40     /**
41      * String identifier for {@link DevicePolicyManager#setPermissionGrantState}.
42      */
43     public static final String PERMISSION_GRANT_POLICY = "permissionGrant";
44 
45     /**
46      * String identifier for {@link DevicePolicyManager#setLockTaskPackages}.
47      */
48     public static final String LOCK_TASK_POLICY = "lockTask";
49 
50     /**
51      * String identifier for {@link DevicePolicyManager#setUserControlDisabledPackages}.
52      */
53     public static final String USER_CONTROL_DISABLED_PACKAGES_POLICY =
54             "userControlDisabledPackages";
55 
56     /**
57      * String identifier for {@link DevicePolicyManager#addPersistentPreferredActivity}.
58      */
59     public static final String PERSISTENT_PREFERRED_ACTIVITY_POLICY =
60             "persistentPreferredActivity";
61 
62     /**
63      * String identifier for {@link DevicePolicyManager#setUninstallBlocked}.
64      */
65     public static final String PACKAGE_UNINSTALL_BLOCKED_POLICY = "packageUninstallBlocked";
66 
67     /**
68      * String identifier for {@link DevicePolicyManager#setApplicationRestrictions}.
69      */
70     public static final String APPLICATION_RESTRICTIONS_POLICY = "applicationRestrictions";
71 
72     /**
73      * String identifier for {@link DevicePolicyManager#setResetPasswordToken}.
74      */
75     public static final String RESET_PASSWORD_TOKEN_POLICY = "resetPasswordToken";
76 
77     /**
78      * String identifier for {@link DevicePolicyManager#setAccountManagementDisabled}.
79      */
80     public static final String ACCOUNT_MANAGEMENT_DISABLED_POLICY = "accountManagementDisabled";
81 
82     /**
83      * String identifier for {@link DevicePolicyManager#setApplicationHidden}.
84      */
85     public static final String APPLICATION_HIDDEN_POLICY = "applicationHidden";
86 
87     /**
88      * String identifier for {@link DevicePolicyManager#setCameraDisabled}.
89      */
90     public static final String CAMERA_DISABLED_POLICY = "cameraDisabled";
91 
92     /**
93      * String identifier for {@link DevicePolicyManager#setStatusBarDisabled}.
94      */
95     public static final String STATUS_BAR_DISABLED_POLICY = "statusBarDisabled";
96 
97     /**
98      * String identifier for {@link DevicePolicyManager#setPackagesSuspended}.
99      */
100     public static final String PACKAGES_SUSPENDED_POLICY = "packagesSuspended";
101 
102     /**
103      * String identifier for {@link DevicePolicyManager#setKeyguardDisabledFeatures}.
104      */
105     public static final String KEYGUARD_DISABLED_FEATURES_POLICY = "keyguardDisabledFeatures";
106 
107     /**
108      * String identifier for {@link DevicePolicyManager#setAutoTimeEnabled}.
109      */
110     public static final String AUTO_TIME_POLICY = "autoTime";
111 
112     /**
113      * String identifier for {@link DevicePolicyManager#setBackupServiceEnabled}.
114      */
115     public static final String BACKUP_SERVICE_POLICY = "backupService";
116 
117     /**
118      * String identifier for {@link DevicePolicyManager#setPermittedInputMethods}.
119      *
120      * @hide
121      */
122     @TestApi
123     public static final String PERMITTED_INPUT_METHODS_POLICY = "permittedInputMethods";
124 
125     /**
126      * String identifier for {@link DevicePolicyManager#setPersonalAppsSuspended}.
127      *
128      * @hide
129      */
130     @TestApi
131     public static final String PERSONAL_APPS_SUSPENDED_POLICY = "personalAppsSuspended";
132 
133     /**
134      * String identifier for {@link DevicePolicyManager#setScreenCaptureDisabled}.
135      *
136      * @hide
137      */
138     @TestApi
139     public static final String SCREEN_CAPTURE_DISABLED_POLICY = "screenCaptureDisabled";
140 
141     /**
142      * String identifier for {@link DevicePolicyManager#setTrustAgentConfiguration}.
143      *
144      * @hide
145      */
146     public static final String TRUST_AGENT_CONFIGURATION_POLICY = "trustAgentConfiguration";
147 
148     /**
149      * String identifier for {@link DevicePolicyManager#addCrossProfileIntentFilter}.
150      *
151      * @hide
152      */
153     public static final String CROSS_PROFILE_INTENT_FILTER_POLICY = "crossProfileIntentFilter";
154 
155     /**
156      * String identifier for {@link DevicePolicyManager#addCrossProfileWidgetProvider}.
157      *
158      * @hide
159      */
160     public static final String CROSS_PROFILE_WIDGET_PROVIDER_POLICY = "crossProfileWidgetProvider";
161 
162     /**
163      * @hide
164      */
165     public static final String USER_RESTRICTION_PREFIX = "userRestriction_";
166 
167     /**
168      * Returns a string identifier for the provided user restrictions, see
169      * {@link DevicePolicyManager#addUserRestriction} and {@link UserManager} for the list of
170      * available restrictions.
171      */
172     @NonNull
getIdentifierForUserRestriction( @serManager.UserRestrictionKey @onNull String restriction)173     public static String getIdentifierForUserRestriction(
174             @UserManager.UserRestrictionKey @NonNull String restriction) {
175         Objects.requireNonNull(restriction);
176         return USER_RESTRICTION_PREFIX + restriction;
177     }
178 }
179