1<?xml version="1.0" encoding="utf-8"?>
2<!--
3/*
4 * Copyright (C) 2007-2017 The Android Open Source Project
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *      http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18-->
19<manifest xmlns:android="http://schemas.android.com/apk/res/android"
20        package="com.android.documentsui">
21
22    <uses-sdk android:minSdkVersion="29"/>
23
24    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
25    <uses-permission android:name="android.permission.REMOVE_TASKS" />
26    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
27    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
28    <uses-permission android:name="android.permission.WAKE_LOCK" />
29    <uses-permission android:name="android.permission.CACHE_CONTENT" />
30    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
31    <uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" />
32    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
33    <uses-permission android:name="android.permission.MODIFY_QUIET_MODE" />
34    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
35    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
36    <uses-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS"/>
37
38    <!-- Permissions required for reading and logging compat changes -->
39    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
40    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
41
42    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
43
44    <!-- Permissions required for reading device configs -->
45    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
46
47    <application
48        android:name=".DocumentsApplication"
49        android:label="@string/app_label"
50        android:icon="@drawable/app_icon"
51        android:supportsRtl="true"
52        android:allowBackup="true"
53        android:backupAgent=".prefs.BackupAgent"
54        android:fullBackupOnly="false"
55        android:crossProfile="true">
56
57        <meta-data
58            android:name="com.google.android.backup.api_key"
59            android:value="AEdPqrEAAAAInBA8ued0O_ZyYUsVhwinUF-x50NIe9K0GzBW4A" />
60
61        <activity
62            android:name=".picker.PickActivity"
63            android:exported="true"
64            android:theme="@style/LauncherTheme"
65            android:visibleToInstantApps="true">
66            <intent-filter android:priority="100">
67                <action android:name="android.intent.action.OPEN_DOCUMENT" />
68                <category android:name="android.intent.category.DEFAULT" />
69                <category android:name="android.intent.category.OPENABLE" />
70                <data android:mimeType="*/*" />
71            </intent-filter>
72            <intent-filter android:priority="100">
73                <action android:name="android.intent.action.CREATE_DOCUMENT" />
74                <category android:name="android.intent.category.DEFAULT" />
75                <category android:name="android.intent.category.OPENABLE" />
76                <data android:mimeType="*/*" />
77            </intent-filter>
78            <intent-filter android:priority="100">
79                <action android:name="android.intent.action.GET_CONTENT" />
80                <category android:name="android.intent.category.DEFAULT" />
81                <category android:name="android.intent.category.OPENABLE" />
82                <data android:mimeType="*/*" />
83            </intent-filter>
84            <intent-filter android:priority="100">
85                <action android:name="android.intent.action.OPEN_DOCUMENT_TREE" />
86                <category android:name="android.intent.category.DEFAULT" />
87            </intent-filter>
88        </activity>
89
90        <activity
91            android:name=".files.LauncherActivity"
92            android:label="@string/launcher_label"
93            android:icon="@drawable/launcher_icon"
94            android:theme="@android:style/Theme.NoDisplay">
95        </activity>
96
97        <activity
98            android:name=".inspector.InspectorActivity"
99            android:label="@string/menu_inspect"
100            android:icon="@drawable/launcher_icon"
101            android:theme="@style/DocumentsTheme">
102        </activity>
103
104        <!--  Preserve original launcher activity from Nougat. -->
105        <activity-alias
106            android:name=".LauncherActivity"
107            android:targetActivity=".files.LauncherActivity"
108            android:label="@string/launcher_label"
109            android:exported="true"
110            android:icon="@drawable/launcher_icon" >
111            <intent-filter>
112                <action android:name="android.intent.action.MAIN" />
113                <category android:name="android.intent.category.LAUNCHER" />
114                <category android:name="android.intent.category.APP_FILES" />
115            </intent-filter>
116            <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
117        </activity-alias>
118
119        <activity
120            android:name=".files.FilesActivity"
121            android:documentLaunchMode="intoExisting"
122            android:exported="true"
123            android:theme="@style/LauncherTheme">
124            <intent-filter>
125                <action android:name="android.intent.action.MAIN" />
126            </intent-filter>
127            <intent-filter>
128                <action android:name="android.intent.action.VIEW" />
129                <category android:name="android.intent.category.DEFAULT" />
130                <data android:mimeType="vnd.android.document/root" />
131            </intent-filter>
132            <intent-filter>
133                <action android:name="android.intent.action.VIEW" />
134                <category android:name="android.intent.category.DEFAULT" />
135                <data android:mimeType="vnd.android.document/directory" />
136            </intent-filter>
137        </activity>
138
139        <activity-alias android:name=".ViewDownloadsActivity"
140                        android:targetActivity=".files.FilesActivity"
141                        android:exported="true"
142                        android:enabled="@bool/handle_view_downloads_intent">
143            <intent-filter>
144                <action android:name="android.intent.action.VIEW_DOWNLOADS" />
145                <category android:name="android.intent.category.DEFAULT" />
146            </intent-filter>
147        </activity-alias>
148
149        <activity
150            android:name=".ScopedAccessActivity"
151            android:exported="true"
152            android:theme="@android:style/Theme.Translucent.NoTitleBar">
153            <intent-filter>
154                <action android:name="android.os.storage.action.OPEN_EXTERNAL_DIRECTORY" />
155                <category android:name="android.intent.category.DEFAULT" />
156            </intent-filter>
157        </activity>
158
159        <provider
160            android:name=".picker.LastAccessedProvider"
161            android:authorities="com.android.documentsui.lastAccessed"
162            android:exported="false"/>
163
164        <provider
165            android:name=".picker.PickCountRecordProvider"
166            android:authorities="com.android.documentsui.pickCountRecord"
167            android:exported="false"/>
168
169        <provider
170            android:name=".archives.ArchivesProvider"
171            android:authorities="com.android.documentsui.archives"
172            android:grantUriPermissions="true"
173            android:permission="android.permission.MANAGE_DOCUMENTS"
174            android:exported="true">
175            <intent-filter>
176                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
177            </intent-filter>
178        </provider>
179
180        <receiver android:name=".PackageReceiver"
181            android:exported="true">
182            <intent-filter>
183                <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
184                <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
185                <data android:scheme="package" />
186            </intent-filter>
187        </receiver>
188
189        <receiver android:name=".roots.BootReceiver" android:enabled="false"
190            android:exported="true">
191            <intent-filter>
192                <action android:name="android.intent.action.BOOT_COMPLETED" />
193            </intent-filter>
194        </receiver>
195
196        <receiver android:name=".PreBootReceiver"
197            android:exported="true">
198            <intent-filter>
199                <action android:name="android.intent.action.PRE_BOOT_COMPLETED" />
200            </intent-filter>
201        </receiver>
202
203        <!-- Run FileOperationService in a separate process so that we can use FileLock class to
204            wait until jumbo clip is done writing to disk before reading it. See ClipStorage for
205            details. -->
206        <service
207            android:name=".services.FileOperationService"
208            android:exported="false"
209            android:foregroundServiceType="dataSync"
210            android:process=":com.android.documentsui.services">
211        </service>
212
213    </application>
214</manifest>
215