1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  ~ Copyright (C) 2023 The Android Open Source Project
4  ~
5  ~ Licensed under the Apache License, Version 2.0 (the "License");
6  ~ you may not use this file except in compliance with the License.
7  ~ You may obtain a copy of the License at
8  ~
9  ~      http://www.apache.org/licenses/LICENSE-2.0
10  ~
11  ~ Unless required by applicable law or agreed to in writing, software
12  ~ distributed under the License is distributed on an "AS IS" BASIS,
13  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  ~ See the License for the specific language governing permissions and
15  ~ limitations under the License.
16  -->
17
18<!--The base manifest file contains all elements from DeviceLockController.
19    Any new components should also be added to
20    src/com/android/devicelockcontroller/debug/AndroidManifest.xml
21    -->
22<manifest xmlns:android="http://schemas.android.com/apk/res/android"
23    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
24    xmlns:tools="http://schemas.android.com/tools"
25    package="com.android.devicelockcontroller">
26
27    <!-- Permission for calls from controller to device lock service -->
28    <permission android:name="com.android.devicelockcontroller.permission.MANAGE_DEVICE_LOCK_SERVICE_FROM_CONTROLLER"
29        android:protectionLevel="signature" />
30    <!-- Permission used by a Kiosk app to send the clear device broadcast. Given that no app holds
31      this permission, only our system service component is able to receive the broadcast -->
32    <permission android:name="com.android.devicelock.permission.RECEIVE_CLEAR_BROADCAST"
33        android:protectionLevel="signature" />
34    <!-- Permission checked by kiosk setup activity -->
35    <permission android:name="com.android.devicelock.permission.START_KIOSK_SETUP_ACTIVITY"
36        android:protectionLevel="signature" />
37
38    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
39    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
40    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
41    <uses-permission android:name="android.permission.MASTER_CLEAR" />
42    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL" />
43    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_CALLS" />
44    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES" />
45    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES" />
46    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK" />
47    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT" />
48    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_TIME" />
49    <uses-permission android:name="android.permission.INTERNET" />
50    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
51    <uses-permission android:name="android.permission.USE_EXACT_ALARM" />
52    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
53    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
54    <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
55    <!-- Controller grants itself this permission to call internal APIs on device lock system service -->
56    <uses-permission android:name="com.android.devicelockcontroller.permission.MANAGE_DEVICE_LOCK_SERVICE_FROM_CONTROLLER" />
57    <!-- Kiosk app setup activity should have a corresponding "android:permission" attribute -->
58    <uses-permission android:name="com.android.devicelock.permission.START_KIOSK_SETUP_ACTIVITY" />
59
60    <application
61        android:name=".DeviceLockControllerApplication"
62        android:allowBackup="false"
63        android:allowClearUserData="false"
64        android:label="@string/app_name"
65        android:supportsRtl="true">
66        <activity
67            android:name="com.android.devicelockcontroller.activities.HelpActivity"
68            android:exported="false"
69            android:theme="@style/Theme.DeviceLock.NoActionBar" />
70        <activity
71            android:name="com.android.devicelockcontroller.activities.LandingActivity"
72            android:exported="false"
73            android:excludeFromRecents="true"
74            android:immersive="true"
75            android:theme="@style/Theme.DeviceLock.NoActionBar">
76            <intent-filter>
77                <action android:name="com.android.devicelockcontroller.action.START_DEVICE_FINANCING_PROVISIONING" />
78                <category android:name="android.intent.category.DEFAULT" />
79            </intent-filter>
80        </activity>
81        <activity
82            android:name="com.android.devicelockcontroller.activities.LockedHomeActivity"
83            android:enabled="false"
84            android:excludeFromRecents="true"
85            android:launchMode="singleInstance"
86            android:exported="true"
87            android:noHistory="true"
88            android:theme="@android:style/Theme.Translucent.NoTitleBar">>
89            <intent-filter>
90                <action android:name="android.intent.action.MAIN" />
91                <category android:name="android.intent.category.HOME"/>
92                <category android:name="android.intent.category.DEFAULT"/>
93            </intent-filter>
94        </activity>
95
96        <activity
97            android:name="com.android.devicelockcontroller.activities.ProvisioningActivity"
98            android:exported="false"
99            android:excludeFromRecents="true"
100            android:immersive="true"
101            android:theme="@style/Theme.DeviceLock.NoActionBar" />
102
103        <activity-alias
104            android:name="com.android.devicelockcontroller.activities.DeviceFinancingSecondaryUserLandingActivity"
105            android:exported="false"
106            android:targetActivity=".activities.LandingActivity">
107            <intent-filter>
108                <action android:name="com.android.devicelockcontroller.action.START_DEVICE_FINANCING_SECONDARY_USER_PROVISIONING" />
109                <category android:name="android.intent.category.DEFAULT" />
110            </intent-filter>
111        </activity-alias>
112        <activity-alias
113            android:name="com.android.devicelockcontroller.activities.DeviceFinancingDeferredProvisioningLandingActivity"
114            android:exported="false"
115            android:targetActivity=".activities.LandingActivity">
116            <intent-filter>
117                <action android:name="com.android.devicelockcontroller.action.START_DEVICE_FINANCING_DEFERRED_PROVISIONING" />
118                <category android:name="android.intent.category.DEFAULT" />
119            </intent-filter>
120        </activity-alias>
121        <activity-alias
122            android:name="com.android.devicelockcontroller.activities.DeviceSubsidyProvisioningLandingActivity"
123            android:exported="false"
124            android:targetActivity=".activities.LandingActivity">
125            <intent-filter>
126                <action android:name="com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_PROVISIONING" />
127                <category android:name="android.intent.category.DEFAULT" />
128            </intent-filter>
129        </activity-alias>
130
131        <activity-alias
132            android:name="com.android.devicelockcontroller.activities.DeviceSubsidyDeferredProvisioningLandingActivity"
133            android:exported="false"
134            android:targetActivity=".activities.LandingActivity">
135            <intent-filter>
136                <action android:name="com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_DEFERRED_PROVISIONING" />
137                <category android:name="android.intent.category.DEFAULT" />
138            </intent-filter>
139        </activity-alias>
140
141        <activity
142            android:name="com.android.devicelockcontroller.activities.DeviceLockSettingsActivity"
143            android:theme="@style/Theme.DeviceLock.NoActionBar"
144            android:exported="true">
145            <intent-filter>
146                <action android:name="com.android.devicelockcontroller.action.DEVICE_INFO_SETTINGS"/>
147                <category android:name="android.intent.category.DEFAULT"/>
148            </intent-filter>
149        </activity>
150
151        <provider
152            android:name="androidx.startup.InitializationProvider"
153            android:authorities="${applicationId}.androidx-startup"
154            tools:node="remove" />
155
156        <!-- System user only boot completed broadcast receiver. This should disabled after provision ready -->
157        <receiver
158            android:name="com.android.devicelockcontroller.receivers.CheckInBootCompletedReceiver"
159            android:exported="false"
160            androidprv:systemUserOnly="true">
161            <intent-filter>
162                <action android:name="android.intent.action.BOOT_COMPLETED" />
163            </intent-filter>
164        </receiver>
165
166        <!-- Multi users boot completed broadcast receiver. -->
167        <receiver
168            android:name="com.android.devicelockcontroller.receivers.FinalizationBootCompletedReceiver"
169            android:exported="false"
170            android:singleUser="false"
171            android:enabled="false">
172            <intent-filter>
173                <action android:name="android.intent.action.BOOT_COMPLETED" />
174            </intent-filter>
175        </receiver>
176
177        <!-- Multi users locked boot completed broadcast receiver. This receiver should only be enabled after provision ready -->
178        <receiver
179            android:name="com.android.devicelockcontroller.receivers.LockedBootCompletedReceiver"
180            android:directBootAware="true"
181            android:enabled="false"
182            android:exported="false"
183            android:singleUser="false">
184            <intent-filter>
185                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
186            </intent-filter>
187        </receiver>
188
189        <!-- Multi users locked boot completed broadcast receiver. This receiver records the boot
190         timestamp -->
191        <receiver
192            android:name="com.android.devicelockcontroller.receivers.RecordBootTimestampReceiver"
193            android:directBootAware="true"
194            android:exported="false"
195            android:singleUser="false">
196            <intent-filter>
197                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
198            </intent-filter>
199        </receiver>
200
201        <!-- Multi users time changed broadcast receiver -->
202        <receiver
203            android:name="com.android.devicelockcontroller.receivers.TimeChangedBroadcastReceiver"
204            android:exported="false"
205            android:singleUser="false">
206            <intent-filter>
207                <action android:name="android.intent.action.TIME_SET" />
208            </intent-filter>
209        </receiver>
210
211        <receiver
212            android:name="com.android.devicelockcontroller.receivers.ProvisionReadyReceiver"
213            android:exported="false"
214            android:singleUser="false" />
215
216        <receiver
217            android:name="com.android.devicelockcontroller.receivers.ResumeProvisionReceiver"
218            android:exported="false"
219            android:singleUser="false" />
220
221        <receiver
222            android:name="com.android.devicelockcontroller.receivers.NextProvisionFailedStepReceiver"
223            android:exported="false"
224            android:singleUser="false" />
225
226        <receiver
227            android:name="com.android.devicelockcontroller.receivers.ResetDeviceReceiver"
228            android:exported="false"
229            android:singleUser="false" />
230
231        <receiver
232            android:name="com.android.devicelockcontroller.WorkManagerExceptionHandler$WorkFailureAlarmReceiver"
233            android:exported="false"
234            androidprv:systemUserOnly="true" />
235
236        <service
237            android:name="com.android.devicelockcontroller.DeviceLockControllerService"
238            android:directBootAware="true"
239            android:exported="false">
240            <intent-filter>
241                <action android:name="android.app.action.DEVICE_LOCK_CONTROLLER_SERVICE" />
242            </intent-filter>
243        </service>
244
245        <service
246            android:name="com.android.devicelockcontroller.storage.SetupParametersService"
247            android:directBootAware="true"
248            android:exported="false"
249            android:singleUser="true" />
250
251        <service
252            android:name="com.android.devicelockcontroller.storage.GlobalParametersService"
253            android:directBootAware="true"
254            android:exported="false"
255            android:singleUser="true" />
256
257        <service
258            android:name="com.android.devicelockcontroller.services.DeviceLockKeepAliveService"
259            android:directBootAware="true"
260            android:exported="false">
261            <intent-filter>
262                <action android:name="com.android.devicelock.action.KEEPALIVE" />
263            </intent-filter>
264        </service>
265
266    </application>
267
268</manifest>
269