• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 com.android.devicelockcontroller.common;
18 
19 import android.content.Context;
20 
21 import androidx.annotation.IntDef;
22 
23 import java.lang.annotation.ElementType;
24 import java.lang.annotation.Retention;
25 import java.lang.annotation.RetentionPolicy;
26 import java.lang.annotation.Target;
27 
28 /** Constants being used by more than one class in the Device Lock application. */
29 public final class DeviceLockConstants {
30 
31     public static final String KEY_KIOSK_APP_INSTALLED = "devicelock_kiosk_app_installed";
32 
33     // Constants related to unique device identifiers.
34     @Retention(RetentionPolicy.SOURCE)
35     @IntDef(value = {
36             DeviceIdType.DEVICE_ID_TYPE_UNSPECIFIED,
37             DeviceIdType.DEVICE_ID_TYPE_IMEI,
38             DeviceIdType.DEVICE_ID_TYPE_MEID,
39     })
40     public @interface DeviceIdType {
41         // The device id type is unspecified
42         int DEVICE_ID_TYPE_UNSPECIFIED = -1;
43         // The device id is a IMEI
44         int DEVICE_ID_TYPE_IMEI = 0;
45         // The device id is a MEID
46         int DEVICE_ID_TYPE_MEID = 1;
47     }
48 
49     @DeviceIdType
50     private static final int LAST_DEVICE_ID_TYPE = DeviceIdType.DEVICE_ID_TYPE_MEID;
51     public static final int TOTAL_DEVICE_ID_TYPES = LAST_DEVICE_ID_TYPE + 1;
52 
53     // Constants related to unique device identifiers.
54     @Retention(RetentionPolicy.SOURCE)
55     @IntDef(value = {
56             STATUS_UNSPECIFIED,
57             RETRY_CHECK_IN,
58             READY_FOR_PROVISION,
59             STOP_CHECK_IN,
60     })
61     public @interface DeviceCheckInStatus {
62     }
63 
64     public static final int STATUS_UNSPECIFIED = 0;
65     public static final int RETRY_CHECK_IN = 1;
66     public static final int READY_FOR_PROVISION = 2;
67     public static final int STOP_CHECK_IN = 3;
68 
69     @Retention(RetentionPolicy.SOURCE)
70     @IntDef(value = {
71             REASON_UNSPECIFIED,
72             USER_DEFERRED_DEVICE_PROVISIONING,
73     })
74     public @interface PauseDeviceProvisioningReason {
75     }
76 
77     public static final int REASON_UNSPECIFIED = 0;
78     public static final int USER_DEFERRED_DEVICE_PROVISIONING = 1;
79 
80     @Target(ElementType.TYPE_USE)
81     @Retention(RetentionPolicy.SOURCE)
82     @IntDef(value = {
83             ProvisioningType.TYPE_UNDEFINED,
84             ProvisioningType.TYPE_FINANCED,
85             ProvisioningType.TYPE_SUBSIDY,
86     })
87     public @interface ProvisioningType {
88         int TYPE_UNDEFINED = 0;
89         int TYPE_FINANCED = 1;
90         int TYPE_SUBSIDY = 2;
91     }
92 
93     public static final String EXTRA_KIOSK_PACKAGE =
94             "com.android.devicelockcontroller.KIOSK_PACKAGE";
95     public static final String EXTRA_KIOSK_SETUP_ACTIVITY =
96             "com.android.devicelockcontroller.KIOSK_SETUP_ACTIVITY";
97     public static final String EXTRA_KIOSK_DISABLE_OUTGOING_CALLS =
98             "com.android.devicelockcontroller.KIOSK_DISABLE_OUTGOING_CALLS";
99     /**
100      * Used to control if notifications are enabled in lock task mode. The default value is false.
101      *
102      * @see android.app.admin.DevicePolicyManager#LOCK_TASK_FEATURE_NOTIFICATIONS
103      */
104     public static final String EXTRA_KIOSK_ENABLE_NOTIFICATIONS_IN_LOCK_TASK_MODE =
105             "com.android.devicelockcontroller.KIOSK_ENABLE_NOTIFICATIONS_IN_LOCK_TASK_MODE";
106     public static final String EXTRA_KIOSK_ALLOWLIST =
107             "com.android.devicelockcontroller.KIOSK_ALLOWLIST";
108     public static final String EXTRA_PROVISIONING_TYPE =
109             "com.android.devicelockcontroller.PROVISIONING_TYPE";
110     public static final String EXTRA_MANDATORY_PROVISION =
111             "com.android.devicelockcontroller.MANDATORY_PROVISION";
112     public static final String EXTRA_KIOSK_APP_PROVIDER_NAME =
113             "com.android.devicelockcontroller.KIOSK_APP_PROVIDER_NAME";
114     public static final String EXTRA_DISALLOW_INSTALLING_FROM_UNKNOWN_SOURCES =
115             "com.android.devicelockcontroller.DISALLOW_INSTALLING_FROM_UNKNOWN_SOURCES";
116 
117     public static final String EXTRA_TERMS_AND_CONDITIONS_URL =
118             "com.android.devicelockcontroller.TERMS_AND_CONDITIONS_URL";
119 
120     public static final String EXTRA_SUPPORT_URL = "com.android.devicelockcontroller.SUPPORT_URL";
121 
122     public static final String ACTION_START_DEVICE_FINANCING_PROVISIONING =
123             "com.android.devicelockcontroller.action.START_DEVICE_FINANCING_PROVISIONING";
124     public static final String ACTION_START_DEVICE_FINANCING_DEFERRED_PROVISIONING =
125             "com.android.devicelockcontroller.action.START_DEVICE_FINANCING_DEFERRED_PROVISIONING";
126 
127     public static final String ACTION_START_DEVICE_FINANCING_SECONDARY_USER_PROVISIONING =
128             "com.android.devicelockcontroller.action"
129             + ".START_DEVICE_FINANCING_SECONDARY_USER_PROVISIONING";
130 
131     public static final String ACTION_START_DEVICE_SUBSIDY_PROVISIONING =
132             "com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_PROVISIONING";
133 
134     public static final String ACTION_START_DEVICE_SUBSIDY_DEFERRED_PROVISIONING =
135             "com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_DEFERRED_PROVISIONING";
136 
137     public static final String ACTION_DEVICE_FINANCING_PROVISION_NOT_REQUIRED =
138             "com.android.devicelockcontroller.action.DEVICE_FINANCING_PROVISION_NOT_REQUIRED";
139 
140     public static final String ACTION_DEVICE_SUBSIDY_PROVISION_NOT_REQUIRED =
141             "com.android.devicelockcontroller.action.DEVICE_SUBSIDY_PROVISION_NOT_REQUIRED";
142 
143     public static final String ACTION_START_DEVICE_FINANCING_ENROLLMENT =
144             "com.android.devicelockcontroller.action.START_DEVICE_FINANCING_ENROLLMENT";
145 
146     public static final String ACTION_START_DEVICE_SUBSIDY_ENROLLMENT =
147             "com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_ENROLLMENT";
148 
149     /** Uses the package name of {@link Context#getPackageName()} to return the landing activity. */
getLandingActivity(Context context)150     public static String getLandingActivity(Context context) {
151         return context.getPackageName() + "/"
152                + "com.android.devicelockcontroller.activities.LandingActivity";
153     }
154 
155     /** Definitions for setup failure types. */
156     @Retention(RetentionPolicy.SOURCE)
157     @IntDef(
158             value = {
159                     SetupFailureReason.SETUP_FAILED,
160                     SetupFailureReason.DOWNLOAD_FAILED,
161                     SetupFailureReason.VERIFICATION_FAILED,
162                     SetupFailureReason.INSTALL_FAILED,
163                     SetupFailureReason.PACKAGE_DOES_NOT_EXIST,
164                     SetupFailureReason.DELETE_PACKAGE_FAILED,
165                     SetupFailureReason.INSTALL_EXISTING_FAILED,
166             })
167     public @interface SetupFailureReason {
168         /** Setup failed to complete */
169         int SETUP_FAILED = 0;
170         /** Failed to download the creditor apk. */
171         int DOWNLOAD_FAILED = 1;
172         /** Verification of the creditor apk failed. */
173         int VERIFICATION_FAILED = 2;
174         /** Failed to install the creditor apk. */
175         int INSTALL_FAILED = 3;
176         /** Pre-installed package not found */
177         int PACKAGE_DOES_NOT_EXIST = 4;
178         /** Delete apk failed */
179         int DELETE_PACKAGE_FAILED = 5;
180         /** Install package for secondary users failed */
181         int INSTALL_EXISTING_FAILED = 6;
182     }
183 
184     /** Definitions for device provision states. */
185     @Retention(RetentionPolicy.SOURCE)
186     @IntDef(
187             value = {
188                     DeviceProvisionState.PROVISION_STATE_UNSPECIFIED,
189                     DeviceProvisionState.PROVISION_STATE_RETRY,
190                     DeviceProvisionState.PROVISION_STATE_DISMISSIBLE_UI,
191                     DeviceProvisionState.PROVISION_STATE_PERSISTENT_UI,
192                     DeviceProvisionState.PROVISION_STATE_FACTORY_RESET,
193                     DeviceProvisionState.PROVISION_STATE_SUCCESS,
194             })
195     public @interface DeviceProvisionState {
196         /** The provision state of the device is unspecified */
197         int PROVISION_STATE_UNSPECIFIED = 0;
198         /** The Device need retry to provision the device. */
199         int PROVISION_STATE_RETRY = 1;
200         /**
201          * The Device need inform the user that there has been an issue with device provisioning.
202          * The user can dismiss this.
203          */
204         int PROVISION_STATE_DISMISSIBLE_UI = 2;
205         /**
206          * The Device need inform the user that there has been an issue with device provisioning.
207          * The user cannot dismiss this.
208          */
209         int PROVISION_STATE_PERSISTENT_UI = 3;
210         /** The Device need factory reset because device provisioning could not be done. */
211         int PROVISION_STATE_FACTORY_RESET = 4;
212         /** Device provisioning was a success. */
213         int PROVISION_STATE_SUCCESS = 5;
214     }
215 
216     /** Restrict instantiation. */
DeviceLockConstants()217     private DeviceLockConstants() {
218     }
219 }
220