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 bind to OemMetadataService --> 58 <uses-permission android:name="com.android.providers.media.permission.BIND_OEM_METADATA_SERVICE" /> 59 60 <!-- Allows an application to have access to OWNER_PACKAGE_NAME field of accessible media files. 61 Applications are still required to have read access to media files. 62 <p>Protection level: normal --> 63 <permission android:name="com.android.providers.media.permission.ACCESS_MEDIA_OWNER_PACKAGE_NAME" 64 android:label="@string/permlab_accessMediaOwnerPackageName" 65 android:description="@string/permdesc_accessMediaOwnerPackageName" 66 android:protectionLevel="normal" /> 67 68 <permission android:name="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" 69 android:protectionLevel="signature" /> 70 71 <permission android:name="com.android.providers.media.permission.BIND_MEDIA_COGNITION_SERVICE" 72 android:protectionLevel="signature"/> 73 74 <permission android:name="com.android.providers.media.permission.ACCESS_OEM_METADATA" 75 android:protectionLevel="signature|privileged" /> 76 77 <permission android:name="com.android.providers.media.permission.BIND_OEM_METADATA_SERVICE" 78 android:protectionLevel="signature"/> 79 80 <!-- We use Photo Picker app icon and label for this package. It is necessary for Photo Picker 81 GET_CONTENT take over. Some apps query packages that can handle GET_CONTENT and want to 82 display the icon and label of the package to the user. --> 83 <application 84 android:name="com.android.providers.media.MediaApplication" 85 android:label="@string/picker_app_label" 86 android:icon="@mipmap/picker_app_icon" 87 android:allowBackup="false" 88 android:supportsRtl="true" 89 android:forceQueryable="true" 90 android:usesCleartextTraffic="true" 91 android:crossProfile="true"> 92 <provider 93 android:name="com.android.providers.media.MediaProvider" 94 android:authorities="media" 95 android:grantUriPermissions="true" 96 android:forceUriPermissions="true" 97 android:exported="true" /> 98 99 <provider 100 android:name="com.android.providers.media.MediaDocumentsProvider" 101 android:label="@string/storage_description" 102 android:authorities="com.android.providers.media.documents" 103 android:grantUriPermissions="true" 104 android:exported="true" 105 android:permission="android.permission.MANAGE_DOCUMENTS"> 106 <intent-filter> 107 <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> 108 </intent-filter> 109 </provider> 110 111 <provider 112 android:name="com.android.providers.media.photopicker.PhotoPickerProvider" 113 android:authorities="com.android.providers.media.photopicker" 114 android:exported="true" 115 android:permission="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" /> 116 117 <provider 118 android:name="com.android.providers.media.photopicker.RemoteVideoPreviewProvider" 119 android:process=":PhotoPicker" 120 android:authorities="com.android.providers.media.remote_video_preview" 121 android:permission="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" 122 android:exported="true" /> 123 124 <!-- Don't initialise WorkManager by default at startup --> 125 <provider 126 android:name="androidx.startup.InitializationProvider" 127 android:authorities="${applicationId}.androidx-startup" 128 android:exported="false" 129 tools:node="merge"> 130 <meta-data 131 android:name="androidx.work.WorkManagerInitializer" 132 android:value="androidx.startup" 133 tools:node="remove" /> 134 </provider> 135 136 <!-- Handles database upgrades after OTAs, then disables itself --> 137 <receiver android:name="com.android.providers.media.MediaUpgradeReceiver" 138 android:exported="true"> 139 <!-- This broadcast is sent after the core system has finished 140 booting, before the home app is launched or BOOT_COMPLETED 141 is sent. --> 142 <intent-filter> 143 <action android:name="android.intent.action.PRE_BOOT_COMPLETED"/> 144 </intent-filter> 145 </receiver> 146 147 <receiver android:name="com.android.providers.media.MediaReceiver" 148 android:exported="true"> 149 <intent-filter> 150 <action android:name="android.intent.action.BOOT_COMPLETED" /> 151 </intent-filter> 152 <intent-filter> 153 <action android:name="android.intent.action.LOCALE_CHANGED" /> 154 </intent-filter> 155 <intent-filter> 156 <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" /> 157 <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" /> 158 <data android:scheme="package" /> 159 </intent-filter> 160 <intent-filter> 161 <action android:name="android.intent.action.MEDIA_MOUNTED" /> 162 <data android:scheme="file" /> 163 </intent-filter> 164 <intent-filter> 165 <action android:name="android.intent.action.MEDIA_SCANNER_SCAN_FILE" /> 166 <data android:scheme="file" /> 167 </intent-filter> 168 </receiver> 169 170 <service 171 android:name="com.android.providers.media.IdleService" 172 android:exported="true" 173 android:permission="android.permission.BIND_JOB_SERVICE" /> 174 175 <service 176 android:name="com.android.providers.media.MediaService" 177 android:exported="true" 178 android:permission="android.permission.BIND_JOB_SERVICE" /> 179 180 <service 181 android:name= 182 "com.android.providers.media.stableuris.job.StableUriIdleMaintenanceService" 183 android:exported="true" 184 android:permission="android.permission.BIND_JOB_SERVICE"/> 185 186 <service android:name="com.android.providers.media.fuse.ExternalStorageServiceImpl" 187 android:exported="true" 188 android:permission="android.permission.BIND_EXTERNAL_STORAGE_SERVICE"> 189 <intent-filter> 190 <action android:name="android.service.storage.ExternalStorageService" /> 191 </intent-filter> 192 </service> 193 194 <activity 195 android:name="com.android.providers.media.PermissionActivity" 196 android:configChanges="orientation|keyboardHidden|screenSize" 197 android:theme="@style/PickerDialogTheme" 198 android:exported="false" 199 android:excludeFromRecents="true" /> 200 201 <activity 202 android:name="com.android.providers.media.CacheClearingActivity" 203 android:configChanges="orientation|keyboardHidden|screenSize" 204 android:exported="true" 205 android:theme="@style/CacheClearingAlertDialogTheme" 206 android:finishOnCloseSystemDialogs="true" 207 android:launchMode="singleTop" 208 android:excludeFromRecents="true" 209 android:visibleToInstantApps="true" > 210 <intent-filter android:priority="100"> 211 <action android:name="android.os.storage.action.CLEAR_APP_CACHE" /> 212 <category android:name="android.intent.category.DEFAULT" /> 213 </intent-filter> 214 </activity> 215 216 <activity 217 android:name="com.android.providers.media.photopicker.PhotoPickerActivity" 218 android:process=":PhotoPicker" 219 android:label="@string/picker_app_label" 220 android:theme="@style/PickerDefaultTheme" 221 android:exported="true" 222 android:excludeFromRecents="true" 223 android:colorMode="wideColorGamut"> 224 <intent-filter android:priority="100" > 225 <action android:name="android.provider.action.PICK_IMAGES" /> 226 <category android:name="android.intent.category.DEFAULT" /> 227 <data android:mimeType="image/*" /> 228 <data android:mimeType="video/*" /> 229 </intent-filter> 230 <intent-filter android:priority="100" > 231 <action android:name="android.provider.action.PICK_IMAGES" /> 232 <category android:name="android.intent.category.DEFAULT" /> 233 </intent-filter> 234 </activity> 235 236 <activity 237 android:name="com.android.providers.media.photopicker.PhotoPickerSettingsActivity" 238 android:theme="@style/PickerSettingsDefaultTheme" 239 android:launchMode="singleInstance" 240 android:process=":PhotoPicker" 241 android:excludeFromRecents="false" 242 android:exported="true" 243 android:enabled="false" > 244 245 <intent-filter android:priority="100" > 246 <action android:name="android.provider.action.PICK_IMAGES_SETTINGS" /> 247 <category android:name="android.intent.category.DEFAULT" /> 248 </intent-filter> 249 250 <!-- ============== BEGIN SYSTEM SETTINGS MENU ITEM SECTION ============== --> 251 <intent-filter> 252 <action android:name="com.android.settings.action.IA_SETTINGS"/> 253 <category android:name="android.intent.category.DEFAULT"/> 254 </intent-filter> 255 256 <meta-data 257 android:name="com.android.settings.category" 258 android:value="com.android.settings.category.ia.apps"/> 259 <meta-data 260 android:name="com.android.settings.title" 261 android:resource="@string/picker_settings_system_settings_menu_title"/> 262 <meta-data 263 android:name="com.android.settings.summary_uri" 264 android:value="content://media/get_cloud_provider_label"/> 265 <meta-data 266 android:name="com.android.settings.profile" 267 android:value="primary_profile_only"/> 268 <!-- ============== END BEGIN SYSTEM SETTINGS MENU ITEM SECTION ============== --> 269 </activity> 270 271 <activity-alias 272 android:name="com.android.providers.media.photopicker.PhotoPickerUserSelectActivity" 273 android:targetActivity="com.android.providers.media.photopicker.PhotoPickerActivity" 274 android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS" 275 android:exported="true" 276 android:excludeFromRecents="true" 277 android:enabled="true"> 278 <intent-filter android:priority="100"> 279 <action android:name="android.provider.action.USER_SELECT_IMAGES_FOR_APP" /> 280 <category android:name="android.intent.category.DEFAULT" /> 281 <data android:mimeType="image/*" /> 282 <data android:mimeType="video/*" /> 283 </intent-filter> 284 <intent-filter android:priority="100"> 285 <action android:name="android.provider.action.USER_SELECT_IMAGES_FOR_APP" /> 286 <category android:name="android.intent.category.DEFAULT" /> 287 </intent-filter> 288 </activity-alias> 289 290 <activity-alias 291 android:name="com.android.providers.media.photopicker.PhotoPickerGetContentActivity" 292 android:targetActivity="com.android.providers.media.photopicker.PhotoPickerActivity" 293 android:exported="true" 294 android:excludeFromRecents="true" 295 android:enabled="true"> 296 <intent-filter android:priority="105" > 297 <action android:name="android.intent.action.GET_CONTENT" /> 298 <category android:name="android.intent.category.OPENABLE" /> 299 <category android:name="android.intent.category.DEFAULT" /> 300 <data android:mimeType="image/*" /> 301 <data android:mimeType="video/*" /> 302 </intent-filter> 303 </activity-alias> 304 305 </application> 306</manifest> 307