1<!--
2**
3** Copyright 2014, 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<manifest xmlns:android="http://schemas.android.com/apk/res/android"
19    xmlns:tools="http://schemas.android.com/tools"
20    package="com.android.managedprovisioning">
21
22    <permission
23        android:name="android.permission.PROVISION_MANAGED_DEVICE_SILENTLY"
24        android:protectionLevel="signature|preinstalled" />
25
26    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
27    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
28    <uses-permission android:name="android.permission.MANAGE_USERS" />
29    <uses-permission android:name="android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" />
30    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
31    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
32    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
33    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
34    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
35    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
36    <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />
37    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
38    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
39    <uses-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS" />
40
41    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
42    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
43    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
44
45    <uses-permission android:name="android.permission.INTERNET" />
46    <uses-permission android:name="android.permission.MASTER_CLEAR" />
47    <uses-permission android:name="android.permission.NFC" />
48    <uses-permission android:name="android.permission.SET_TIME" />
49    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
50
51    <uses-permission android:name="android.permission.CRYPT_KEEPER" />
52    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
53    <uses-permission android:name="android.permission.SHUTDOWN" />
54
55    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
56    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
57
58    <uses-permission android:name="android.permission.PERFORM_CDMA_PROVISIONING" />
59    <uses-permission android:name="android.permission.ACCESS_PDB_STATE" />
60    <uses-permission android:name="android.permission.PEERS_MAC_ADDRESS" />
61
62    <uses-permission android:name="android.permission.NETWORK_MANAGED_PROVISIONING" />
63
64    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
65    <uses-permission android:name="android.permission.MARK_DEVICE_ORGANIZATION_OWNED" />
66
67    <!-- To set the bg color of the deferred setup notification (without a foreground service) -->
68    <uses-permission android:name="android.permission.USE_COLORIZED_NOTIFICATIONS" />
69
70    <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
71
72    <!-- Required by setup design library -->
73    <uses-permission android:name="com.google.android.setupwizard.SETUP_COMPAT_SERVICE" />
74
75    <uses-permission android:name="android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES" />
76
77    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
78
79    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND" />
80
81    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
82
83    <uses-permission android:name="android.permission.LAUNCH_DEVICE_MANAGER_SETUP" />
84
85    <!-- Used to read the device management role holder package name -->
86    <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
87
88    <application
89        android:name=".ManagedProvisioningApplication"
90        android:allowClearUserData="false"
91        android:hardwareAccelerated="true"
92        android:label="@string/app_label"
93        android:supportsRtl="true"
94        android:usesCleartextTraffic="true">
95
96        <meta-data
97            android:name="com.android.managedprovisioning.patch.24760218"
98            android:value="true" />
99
100        <!--
101             Note: Setup activities are android:immersive to prevent full-screen notifications (USB
102            mass storage; incoming calls) from taking over. Note that high-priority notifications
103            (phone calls) will still pop up a small window that can be activated.
104        -->
105        <activity
106            android:name=".provisioning.ProvisioningActivity"
107            android:excludeFromRecents="true"
108            android:immersive="true"
109            android:launchMode="singleTop"
110            android:theme="@style/SudThemeGlifV4.DayNight"></activity>
111
112        <activity
113            android:name=".provisioning.AdminIntegratedFlowPrepareActivity"
114            android:excludeFromRecents="true"
115            android:immersive="true"
116            android:launchMode="singleTop"
117            android:theme="@style/SudThemeGlifV4.DayNight"></activity>
118
119        <activity
120            android:name=".preprovisioning.PreProvisioningActivity"
121            android:excludeFromRecents="true"
122            android:exported="true"
123            android:immersive="true"
124            android:launchMode="singleTop"
125            android:theme="@style/SudThemeGlifV4.DayNight">
126            <intent-filter android:priority="10">
127                <action android:name="android.app.action.PROVISION_MANAGED_PROFILE" />
128                <action android:name="android.app.action.PROVISION_MANAGED_DEVICE" />
129
130                <category android:name="android.intent.category.DEFAULT" />
131            </intent-filter>
132        </activity>
133
134        <activity
135            android:name=".provisioning.ResetAndReturnDeviceActivity"
136            android:excludeFromRecents="true"
137            android:immersive="true"
138            android:theme="@style/SudThemeGlifV4.Light" />
139
140        <activity
141            android:name=".provisioning.ResetDeviceActivity"
142            android:excludeFromRecents="true"
143            android:immersive="true"
144            android:theme="@style/SudThemeGlifV4.Light" />
145
146        <!--
147            Nfc bump entry for device owner provisioning, protected by a permission so only the Nfc
148            stack can trigger this.
149        -->
150        <activity
151            android:name=".preprovisioning.PreProvisioningActivityViaNfc"
152            android:exported="true"
153            android:permission="android.permission.DISPATCH_NFC_MESSAGE"
154            android:theme="@style/SudThemeGlifV4.DayNight">
155            <intent-filter android:priority="10">
156                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
157                <category android:name="android.intent.category.DEFAULT" />
158                <data android:mimeType="application/com.android.managedprovisioning" />
159            </intent-filter>
160        </activity>
161        <!--
162            Trusted app entry for device owner provisioning, protected by a permission so only
163            privileged app can trigger this.
164        -->
165        <activity-alias
166            android:name=".PreProvisioningActivityViaTrustedApp"
167            android:exported="true"
168            android:permission="android.permission.DISPATCH_PROVISIONING_MESSAGE"
169            android:targetActivity=".preprovisioning.PreProvisioningActivity">
170            <intent-filter android:priority="10">
171                <action android:name="android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE" />
172                <action android:name="android.app.action.PROVISION_FINANCED_DEVICE" />
173
174                <category android:name="android.intent.category.DEFAULT" />
175            </intent-filter>
176        </activity-alias>
177        <!-- Entry to resume encryption after reboot. -->
178        <activity-alias
179            android:name=".PreProvisioningActivityAfterEncryption"
180            android:exported="false"
181            android:targetActivity=".preprovisioning.PreProvisioningActivity">
182            <intent-filter android:priority="10">
183                <action android:name="com.android.managedprovisioning.action.RESUME_PROVISIONING" />
184                <category android:name="android.intent.category.DEFAULT" />
185            </intent-filter>
186        </activity-alias>
187
188        <activity
189            android:name=".preprovisioning.terms.TermsActivity"
190            android:excludeFromRecents="true"
191            android:immersive="true"
192            android:launchMode="singleTop"
193            android:theme="@style/SudThemeGlifV4.DayNight" />
194        <activity
195            android:name=".preprovisioning.EncryptDeviceActivity"
196            android:immersive="true"
197            android:launchMode="singleTop"></activity>
198        <!--
199            Entry point for silent device owner provisioning.
200        -->
201        <service android:name=".provisioning.SilentDeviceOwnerProvisioningService"></service>
202        <receiver
203            android:name=".provisioning.SilentDeviceOwnerProvisioningReceiver"
204            android:exported="true"
205            android:permission="android.permission.PROVISION_MANAGED_DEVICE_SILENTLY">
206            <intent-filter android:priority="10">
207                <action android:name="android.app.action.PROVISION_MANAGED_DEVICE_SILENTLY" />
208            </intent-filter>
209        </receiver>
210
211        <activity
212            android:name=".preprovisioning.WebActivity"
213            android:immersive="true"
214            android:launchMode="singleTop"
215            android:process=":webview"
216            android:theme="@style/SudThemeGlifV4.DayNight"></activity>
217
218        <activity
219            android:name=".TrampolineActivity"
220            android:excludeFromRecents="true"
221            android:theme="@android:style/Theme.NoDisplay"></activity>
222
223        <!--
224            When PostEncryptionActivity is disabled, its entire task is going to get killed.
225            So, we explicitly specify a taskAffinity for this instead of a package default to make
226            sure it starts in a new task.
227        -->
228        <activity
229            android:name=".preprovisioning.PostEncryptionActivity"
230            android:enabled="false"
231            android:excludeFromRecents="true"
232            android:exported="true"
233            android:noHistory="true"
234            android:taskAffinity=":PostEncryptionActivity"
235            android:theme="@android:style/Theme.NoDisplay">
236            <intent-filter android:priority="10">
237                <action android:name="android.intent.action.MAIN" />
238
239                <category android:name="android.intent.category.HOME" />
240                <category android:name="android.intent.category.DEFAULT" />
241            </intent-filter>
242        </activity>
243
244        <service android:name=".provisioning.ProvisioningService" />
245        <service android:name=".finalization.SendDpcBroadcastService" />
246        <service android:name=".ota.OtaService" />
247
248        <receiver
249            android:name="com.android.managedprovisioning.BootReminder"
250            android:exported="true">
251            <intent-filter>
252                <action android:name="android.intent.action.BOOT_COMPLETED" />
253            </intent-filter>
254        </receiver>
255
256        <receiver
257            android:name="com.android.managedprovisioning.ota.PreBootListener"
258            android:exported="true">
259            <intent-filter>
260                <action android:name="android.intent.action.PRE_BOOT_COMPLETED" />
261            </intent-filter>
262        </receiver>
263
264        <receiver
265            android:name="com.android.managedprovisioning.provisioninglisteners.ProvisioningCompletedListener"
266            android:exported="true">
267            <intent-filter>
268                <action android:name="android.app.action.PROVISIONING_COMPLETED" />
269            </intent-filter>
270        </receiver>
271
272        <receiver
273            android:name="com.android.managedprovisioning.provisioninglisteners.ManagedUserRemovalListener"
274            android:exported="true">
275            <intent-filter>
276                <action android:name="android.intent.action.USER_REMOVED" />
277            </intent-filter>
278        </receiver>
279
280        <!-- TODO (b/146135268): Add permission for setup-wizard to guard access? -->
281        <activity
282            android:name=".finalization.FinalizationForwarderActivity"
283            android:excludeFromRecents="true"
284            android:exported="true"
285            android:immersive="true"
286            android:launchMode="singleTop"
287            android:theme="@android:style/Theme.Translucent.NoTitleBar">
288            <intent-filter>
289                <!-- TODO (b/177666246): Remove PROVISION_FINALIZATION_INSIDE_SUW
290                after the setup wizard change which calls PROVISION_FINALIZATION is in prebuilt -->
291                <action android:name="android.app.action.PROVISION_FINALIZATION_INSIDE_SUW" />
292                <action android:name="android.app.action.PROVISION_FINALIZATION" />
293
294                <category android:name="android.intent.category.DEFAULT" />
295            </intent-filter>
296        </activity>
297
298        <activity
299            android:name=".finalization.FinalizationInsideSuwActivity"
300            android:excludeFromRecents="true"
301            android:immersive="true"
302            android:launchMode="singleTop"
303            android:theme="@style/SudThemeGlifV4.DayNight" />
304
305        <activity
306            android:name=".provisioning.LandingActivity"
307            android:immersive="true"
308            android:theme="@style/SudThemeGlifV4.DayNight" />
309
310        <activity
311            android:name=".provisioning.FinancedDeviceLandingActivity"
312            android:immersive="true"
313            android:theme="@style/SudThemeGlifV4.DayNight" />
314
315        <activity
316            android:name=".preprovisioning.DownloadRoleHolderActivity"
317            android:immersive="true"
318            android:theme="@style/SudThemeGlifV4.DayNight" />
319
320        <activity
321            android:name=".common.RetryLaunchActivity"
322            android:immersive="true"
323            android:theme="@style/SudThemeGlifV4.DayNight" />
324
325        <activity
326            android:name=".networkconnection.EstablishNetworkConnectionActivity"
327            android:excludeFromRecents="true"
328            android:exported="true"
329            android:immersive="true"
330            android:launchMode="singleTop"
331            android:permission="android.permission.DISPATCH_PROVISIONING_MESSAGE"
332            android:theme="@style/SudThemeGlifV3.DayNight">
333            <intent-filter>
334                <action android:name="android.app.action.ESTABLISH_NETWORK_CONNECTION" />
335                <category android:name="android.intent.category.DEFAULT" />
336            </intent-filter>
337        </activity>
338
339        <service
340            android:name=".analytics.ProcessMetricsJobService"
341            android:permission="android.permission.BIND_JOB_SERVICE" />
342
343        <!-- (b/197919878) Disable startup provider due to resource loading issue. -->
344        <provider
345            android:name="androidx.startup.InitializationProvider"
346            android:authorities="${applicationId}.androidx-startup"
347            tools:node="remove" />
348    </application>
349</manifest>
350