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