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