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    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
22    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
23    <uses-permission android:name="android.permission.MANAGE_USERS" />
24    <uses-permission android:name="android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" />
25    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
26    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
27    <uses-permission android:name="android.permission.DELETE_PACKAGES"/>
28    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
29    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
30    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
31    <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />
32
33    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
34    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
35    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
36
37    <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
38    <uses-permission android:name="android.permission.INTERNET" />
39    <uses-permission android:name="android.permission.MASTER_CLEAR" />
40    <uses-permission android:name="android.permission.NFC" />
41    <uses-permission android:name="android.permission.SET_TIME" />
42    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
43
44    <uses-permission android:name="android.permission.CRYPT_KEEPER" />
45    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
46    <uses-permission android:name="android.permission.SHUTDOWN" />
47
48    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
49    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
50
51    <uses-permission android:name="android.permission.PERFORM_CDMA_PROVISIONING" />
52    <uses-permission android:name="android.permission.ACCESS_PDB_STATE" />
53
54    <application
55        android:label="@string/app_label"
56        android:allowClearUserData="false"
57        android:hardwareAccelerated="true"
58        android:usesCleartextTraffic="true"
59        android:supportsRtl="true">
60
61        <!--
62             Note: Setup activities are android:immersive to prevent full-screen notifications (USB
63            mass storage; incoming calls) from taking over. Note that high-priority notifications
64            (phone calls) will still pop up a small window that can be activated.
65        -->
66        <activity
67             android:name="DeviceOwnerProvisioningActivity"
68             android:excludeFromRecents="true"
69             android:immersive="true"
70             android:launchMode="singleTop"
71             android:theme="@style/SetupWorkSpaceTheme">
72        </activity>
73        <activity
74            android:name="ProfileOwnerProvisioningActivity"
75            android:excludeFromRecents="true"
76            android:immersive="true"
77            android:launchMode="singleTop"
78            android:theme="@style/SetupWorkSpaceTheme">
79        </activity>
80        <activity
81            android:name=".uiflows.PreProvisioningActivity"
82            android:excludeFromRecents="true"
83            android:immersive="true"
84            android:launchMode="singleTop"
85            android:theme="@style/SetupWorkSpaceTheme">
86            <intent-filter android:priority="10">
87                <action android:name="android.app.action.PROVISION_MANAGED_PROFILE" />
88                <action android:name="android.app.action.PROVISION_MANAGED_USER" />
89                <action android:name="android.app.action.PROVISION_MANAGED_DEVICE" />
90                <action android:name="android.app.action.PROVISION_MANAGED_SHAREABLE_DEVICE" />
91                <category android:name="android.intent.category.DEFAULT" />
92            </intent-filter>
93        </activity>
94        <!--
95            Nfc bump entry for device owner provisioning, protected by a permission so only the Nfc
96            stack can trigger this.
97        -->
98        <activity-alias
99            android:name="PreProvisioningActivityViaNfc"
100            android:targetActivity=".uiflows.PreProvisioningActivity"
101            android:permission="android.permission.DISPATCH_NFC_MESSAGE"
102            android:exported="true">
103            <intent-filter android:priority="10">
104                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
105                <category android:name="android.intent.category.DEFAULT" />
106                <data android:mimeType="application/com.android.managedprovisioning" />
107            </intent-filter>
108        </activity-alias>
109        <!--
110            Trusted app entry for device owner provisioning, protected by a permission so only
111            privileged app can trigger this.
112        -->
113        <activity-alias
114            android:name="PreProvisioningActivityViaTrustedApp"
115            android:targetActivity=".uiflows.PreProvisioningActivity"
116            android:permission="android.permission.DISPATCH_PROVISIONING_MESSAGE"
117            android:exported="true">
118            <intent-filter android:priority="10">
119                <action
120                    android:name="android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE"
121                />
122                <category android:name="android.intent.category.DEFAULT" />
123            </intent-filter>
124        </activity-alias>
125        <!-- Entry to resume encryption after reboot. -->
126        <activity-alias
127            android:name="PreProvisioningActivityAfterEncryption"
128            android:targetActivity=".uiflows.PreProvisioningActivity"
129            android:exported="false">
130            <intent-filter android:priority="10">
131                <action
132                    android:name="com.android.managedprovisioning.action.RESUME_PROVISIONING"
133                />
134                <category android:name="android.intent.category.DEFAULT" />
135            </intent-filter>
136        </activity-alias>
137        <activity
138            android:name=".uiflows.EncryptDeviceActivity"
139            android:immersive="true"
140            android:launchMode="singleTop"
141            android:theme="@style/SetupWorkSpaceTheme">
142        </activity>
143
144        <activity
145            android:name=".uiflows.WebActivity"
146            android:immersive="true"
147            android:launchMode="singleTop"
148            android:process=":webview"
149            android:theme="@style/SetupWorkSpaceTheme">
150        </activity>
151
152        <activity
153            android:name=".TrampolineActivity"
154            android:theme="@android:style/Theme.NoDisplay"
155            android:excludeFromRecents="true">
156        </activity>
157
158        <!--
159            When PostEncryptionActivity is disabled, its entire task is going to get killed.
160            So, we explicitly specify a taskAffinity for this instead of a package default to make
161            sure it starts in a new task.
162        -->
163        <activity android:name=".uiflows.PostEncryptionActivity"
164            android:theme="@android:style/Theme.NoDisplay"
165            android:noHistory="true"
166            android:excludeFromRecents="true"
167            android:enabled="false"
168            android:taskAffinity=":PostEncryptionActivity">
169            <intent-filter android:priority="10">
170                <action android:name="android.intent.action.MAIN" />
171                <category android:name="android.intent.category.HOME" />
172                <category android:name="android.intent.category.DEFAULT" />
173            </intent-filter>
174        </activity>
175
176        <service
177            android:name="ProfileOwnerProvisioningService" >
178        </service>
179        <service
180            android:name="DeviceOwnerProvisioningService" >
181        </service>
182
183        <receiver android:name="com.android.managedprovisioning.BootReminder">
184            <intent-filter>
185                <action android:name="android.intent.action.BOOT_COMPLETED" />
186            </intent-filter>
187        </receiver>
188
189        <receiver android:name="com.android.managedprovisioning.PreBootListener">
190            <intent-filter>
191                <action android:name="android.intent.action.PRE_BOOT_COMPLETED" />
192            </intent-filter>
193        </receiver>
194
195        <!-- TODO: Add permission for setup-wizard to guard access? -->
196        <activity android:name=".FinalizationActivity"
197                android:theme="@android:style/Theme.NoDisplay"
198                android:noHistory="true"
199                android:excludeFromRecents="true"
200                android:exported="true">
201            <intent-filter>
202                <action android:name="android.app.action.PROVISION_FINALIZATION" />
203                <category android:name="android.intent.category.DEFAULT" />
204            </intent-filter>
205        </activity>
206    </application>
207</manifest>
208