• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2          xmlns:tools="http://schemas.android.com/tools"
3        package="com.android.providers.media.module">
4
5    <meta-data
6        android:name="com.android.providers.media.photopicker.data.glide.PickerGlideModule"
7        android:value="GlideModule" />
8
9    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
10    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
11    <uses-permission android:name="android.permission.WAKE_LOCK" />
12    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
13
14    <uses-permission android:name="android.permission.MANAGE_USERS" />
15    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
16    <!-- Permission required  to prompt for the work profile to be turned on -->
17    <uses-permission android:name="android.permission.MODIFY_QUIET_MODE" />
18
19    <uses-permission android:name="android.permission.WATCH_APPOPS" />
20    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
21    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
22
23    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
24    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
25    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
26    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
27    <uses-permission android:name="android.permission.USE_RESERVED_DISK" android:maxSdkVersion="34" />
28    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
29    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
30    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
31
32    <!-- Permissions required for reading and logging compat changes -->
33    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
34    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
35
36    <!-- Permissions required for reading device configs -->
37    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
38
39    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
40
41    <!-- Permissions required for statsd pull metrics -->
42    <uses-permission android:name="android.permission.REGISTER_STATS_PULL_ATOM"/>
43
44    <!-- Permissions required to check if an app is in the foreground or not during IO -->
45    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
46
47    <!-- Permission required to access CloudMediaProviders. Declared by us -->
48    <uses-permission android:name="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" />
49
50    <!-- Permission required to bind to MediaCognitionService. Declared by us -->
51    <uses-permission android:name="com.android.providers.media.permission.BIND_MEDIA_COGNITION_SERVICE" />
52
53    <!-- Permission required to access OEM metadata. Declared by us -->
54    <uses-permission
55        android:name="com.android.providers.media.permission.ACCESS_OEM_METADATA" />
56
57    <!-- Permission required to update OEM metadata. Declared by us -->
58    <uses-permission
59        android:name="com.android.providers.media.permission.UPDATE_OEM_METADATA" />
60
61    <!-- Permission required to bind to OemMetadataService -->
62    <uses-permission android:name="com.android.providers.media.permission.BIND_OEM_METADATA_SERVICE" />
63
64    <!-- Allows an application to have access to OWNER_PACKAGE_NAME field of accessible media files.
65         Applications are still required to have read access to media files.
66         <p>Protection level: normal -->
67    <permission android:name="com.android.providers.media.permission.ACCESS_MEDIA_OWNER_PACKAGE_NAME"
68                android:label="@string/permlab_accessMediaOwnerPackageName"
69                android:description="@string/permdesc_accessMediaOwnerPackageName"
70                android:protectionLevel="normal" />
71
72    <permission android:name="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS"
73                android:protectionLevel="signature" />
74
75    <permission android:name="com.android.providers.media.permission.BIND_MEDIA_COGNITION_SERVICE"
76                android:protectionLevel="signature"/>
77
78    <permission android:name="com.android.providers.media.permission.ACCESS_OEM_METADATA"
79                android:protectionLevel="signature|privileged" />
80
81    <permission android:name="com.android.providers.media.permission.UPDATE_OEM_METADATA"
82                android:protectionLevel="signature|privileged" />
83
84    <permission android:name="com.android.providers.media.permission.BIND_OEM_METADATA_SERVICE"
85                android:protectionLevel="signature"/>
86
87    <!-- We use Photo Picker app icon and label for this package. It is necessary for Photo Picker
88         GET_CONTENT take over. Some apps query packages that can handle GET_CONTENT and want to
89         display the icon and label of the package to the user. -->
90    <application
91            android:name="com.android.providers.media.MediaApplication"
92            android:label="@string/picker_app_label"
93            android:icon="@mipmap/picker_app_icon"
94            android:supportsRtl="true"
95            android:forceQueryable="true"
96            android:usesCleartextTraffic="true"
97            android:crossProfile="true"
98            android:allowBackup="true"
99            android:fullBackupOnly="true"
100            android:backupInForeground="true"
101            android:killAfterRestore="false"
102            android:restoreAnyVersion="true"
103            android:backupAgent="com.android.providers.media.backupandrestore.MediaBackupAgent"
104            android:dataExtractionRules="@xml/data_extraction_rules">
105        <provider
106                android:name="com.android.providers.media.MediaProvider"
107                android:authorities="media"
108                android:grantUriPermissions="true"
109                android:forceUriPermissions="true"
110                android:exported="true" />
111
112        <provider
113                android:name="com.android.providers.media.MediaDocumentsProvider"
114                android:label="@string/storage_description"
115                android:authorities="com.android.providers.media.documents"
116                android:grantUriPermissions="true"
117                android:exported="true"
118                android:permission="android.permission.MANAGE_DOCUMENTS">
119            <intent-filter>
120                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
121            </intent-filter>
122        </provider>
123
124        <provider
125            android:name="com.android.providers.media.photopicker.PhotoPickerProvider"
126            android:authorities="com.android.providers.media.photopicker"
127            android:exported="true"
128            android:permission="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" />
129
130        <provider
131            android:name="com.android.providers.media.photopicker.RemoteVideoPreviewProvider"
132            android:process=":PhotoPicker"
133            android:authorities="com.android.providers.media.remote_video_preview"
134            android:permission="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS"
135            android:exported="true" />
136
137        <!-- Don't initialise WorkManager by default at startup -->
138        <provider
139            android:name="androidx.startup.InitializationProvider"
140            android:authorities="${applicationId}.androidx-startup"
141            android:exported="false"
142            tools:node="merge">
143            <meta-data
144                android:name="androidx.work.WorkManagerInitializer"
145                android:value="androidx.startup"
146                tools:node="remove" />
147        </provider>
148
149        <!-- Handles database upgrades after OTAs, then disables itself -->
150        <receiver android:name="com.android.providers.media.MediaUpgradeReceiver"
151            android:exported="true">
152            <!-- This broadcast is sent after the core system has finished
153                 booting, before the home app is launched or BOOT_COMPLETED
154                 is sent. -->
155            <intent-filter>
156                <action android:name="android.intent.action.PRE_BOOT_COMPLETED"/>
157            </intent-filter>
158        </receiver>
159
160        <receiver android:name="com.android.providers.media.MediaReceiver"
161            android:exported="true">
162            <intent-filter>
163                <action android:name="android.intent.action.BOOT_COMPLETED" />
164            </intent-filter>
165            <intent-filter>
166                <action android:name="android.intent.action.LOCALE_CHANGED" />
167            </intent-filter>
168            <intent-filter>
169                <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
170                <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
171                <data android:scheme="package" />
172            </intent-filter>
173            <intent-filter>
174                <action android:name="android.intent.action.MEDIA_MOUNTED" />
175                <data android:scheme="file" />
176            </intent-filter>
177            <intent-filter>
178                <action android:name="android.intent.action.MEDIA_SCANNER_SCAN_FILE" />
179                <data android:scheme="file" />
180            </intent-filter>
181        </receiver>
182
183        <service
184            android:name="com.android.providers.media.IdleService"
185            android:exported="true"
186            android:permission="android.permission.BIND_JOB_SERVICE" />
187
188        <service
189            android:name="com.android.providers.media.MediaService"
190            android:exported="true"
191            android:permission="android.permission.BIND_JOB_SERVICE" />
192
193        <service
194            android:name=
195                "com.android.providers.media.stableuris.job.StableUriIdleMaintenanceService"
196            android:exported="true"
197            android:permission="android.permission.BIND_JOB_SERVICE"/>
198
199        <service android:name="com.android.providers.media.fuse.ExternalStorageServiceImpl"
200                 android:exported="true"
201                 android:permission="android.permission.BIND_EXTERNAL_STORAGE_SERVICE">
202            <intent-filter>
203                <action android:name="android.service.storage.ExternalStorageService" />
204            </intent-filter>
205        </service>
206
207        <activity
208                android:name="com.android.providers.media.PermissionActivity"
209                android:configChanges="orientation|keyboardHidden|screenSize"
210                android:theme="@style/PickerDialogTheme"
211                android:exported="false"
212                android:excludeFromRecents="true" />
213
214        <activity
215                android:name="com.android.providers.media.CacheClearingActivity"
216                android:configChanges="orientation|keyboardHidden|screenSize"
217                android:exported="true"
218                android:theme="@style/CacheClearingAlertDialogTheme"
219                android:finishOnCloseSystemDialogs="true"
220                android:launchMode="singleTop"
221                android:excludeFromRecents="true"
222                android:visibleToInstantApps="true" >
223            <intent-filter android:priority="100">
224                <action android:name="android.os.storage.action.CLEAR_APP_CACHE" />
225                <category android:name="android.intent.category.DEFAULT" />
226            </intent-filter>
227        </activity>
228
229        <activity
230                android:name="com.android.providers.media.photopicker.PhotoPickerActivity"
231                android:process=":PhotoPicker"
232                android:label="@string/picker_app_label"
233                android:theme="@style/PickerDefaultTheme"
234                android:exported="true"
235                android:excludeFromRecents="true"
236                android:colorMode="wideColorGamut">
237            <intent-filter android:priority="100" >
238                <action android:name="android.provider.action.PICK_IMAGES" />
239                <category android:name="android.intent.category.DEFAULT" />
240                <data android:mimeType="image/*" />
241                <data android:mimeType="video/*" />
242            </intent-filter>
243            <intent-filter android:priority="100" >
244                <action android:name="android.provider.action.PICK_IMAGES" />
245                <category android:name="android.intent.category.DEFAULT" />
246            </intent-filter>
247        </activity>
248
249        <activity
250            android:name="com.android.providers.media.photopicker.PhotoPickerSettingsActivity"
251            android:theme="@style/PickerSettingsDefaultTheme"
252            android:launchMode="singleInstance"
253            android:process=":PhotoPicker"
254            android:excludeFromRecents="false"
255            android:exported="true"
256            android:enabled="false" >
257
258            <intent-filter android:priority="100" >
259                <action android:name="android.provider.action.PICK_IMAGES_SETTINGS" />
260                <category android:name="android.intent.category.DEFAULT" />
261            </intent-filter>
262
263            <!-- ============== BEGIN SYSTEM SETTINGS MENU ITEM SECTION ============== -->
264            <intent-filter>
265                <action android:name="com.android.settings.action.IA_SETTINGS"/>
266                <category android:name="android.intent.category.DEFAULT"/>
267            </intent-filter>
268
269            <meta-data
270                android:name="com.android.settings.category"
271                android:value="com.android.settings.category.ia.apps"/>
272            <meta-data
273                android:name="com.android.settings.title"
274                android:resource="@string/picker_settings_system_settings_menu_title"/>
275            <meta-data
276                android:name="com.android.settings.summary_uri"
277                android:value="content://media/get_cloud_provider_label"/>
278            <meta-data
279                android:name="com.android.settings.profile"
280                android:value="primary_profile_only"/>
281            <!-- ============== END BEGIN SYSTEM SETTINGS MENU ITEM SECTION ============== -->
282        </activity>
283
284        <activity-alias
285            android:name="com.android.providers.media.photopicker.PhotoPickerUserSelectActivity"
286            android:targetActivity="com.android.providers.media.photopicker.PhotoPickerActivity"
287            android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS"
288            android:exported="true"
289            android:excludeFromRecents="true"
290            android:enabled="true">
291            <intent-filter android:priority="100">
292               <action android:name="android.provider.action.USER_SELECT_IMAGES_FOR_APP" />
293                <category android:name="android.intent.category.DEFAULT" />
294                <data android:mimeType="image/*" />
295                <data android:mimeType="video/*" />
296            </intent-filter>
297            <intent-filter android:priority="100">
298                <action android:name="android.provider.action.USER_SELECT_IMAGES_FOR_APP" />
299                <category android:name="android.intent.category.DEFAULT" />
300            </intent-filter>
301        </activity-alias>
302
303        <activity-alias
304            android:name="com.android.providers.media.photopicker.PhotoPickerGetContentActivity"
305            android:targetActivity="com.android.providers.media.photopicker.PhotoPickerActivity"
306            android:exported="true"
307            android:excludeFromRecents="true"
308            android:enabled="true">
309            <intent-filter android:priority="105" >
310                <action android:name="android.intent.action.GET_CONTENT" />
311                <category android:name="android.intent.category.OPENABLE" />
312                <category android:name="android.intent.category.DEFAULT" />
313                <data android:mimeType="image/*" />
314                <data android:mimeType="video/*" />
315            </intent-filter>
316        </activity-alias>
317
318    </application>
319</manifest>
320