<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
        package="com.android.providers.media.module">

    <meta-data
        android:name="com.android.providers.media.photopicker.data.glide.PickerGlideModule"
        android:value="GlideModule" />

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <!-- Permission required  to prompt for the work profile to be turned on -->
    <uses-permission android:name="android.permission.MODIFY_QUIET_MODE" />

    <uses-permission android:name="android.permission.WATCH_APPOPS" />
    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.USE_RESERVED_DISK" android:maxSdkVersion="34" />
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

    <!-- Permissions required for reading and logging compat changes -->
    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>

    <!-- Permissions required for reading device configs -->
    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>

    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>

    <!-- Permissions required for statsd pull metrics -->
    <uses-permission android:name="android.permission.REGISTER_STATS_PULL_ATOM"/>

    <!-- Permissions required to check if an app is in the foreground or not during IO -->
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />

    <!-- Permission required to access CloudMediaProviders. Declared by us -->
    <uses-permission android:name="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" />

    <!-- Permission required to bind to MediaCognitionService. Declared by us -->
    <uses-permission android:name="com.android.providers.media.permission.BIND_MEDIA_COGNITION_SERVICE" />

    <!-- Allows an application to have access to OWNER_PACKAGE_NAME field of accessible media files.
         Applications are still required to have read access to media files.
         <p>Protection level: normal -->
    <permission android:name="com.android.providers.media.permission.ACCESS_MEDIA_OWNER_PACKAGE_NAME"
                android:label="@string/permlab_accessMediaOwnerPackageName"
                android:description="@string/permdesc_accessMediaOwnerPackageName"
                android:protectionLevel="normal" />

    <permission android:name="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS"
                android:protectionLevel="signature" />

    <permission android:name="com.android.providers.media.permission.BIND_MEDIA_COGNITION_SERVICE"
                android:protectionLevel="signature"/>

    <!-- We use Photo Picker app icon and label for this package. It is necessary for Photo Picker
         GET_CONTENT take over. Some apps query packages that can handle GET_CONTENT and want to
         display the icon and label of the package to the user. -->
    <application
            android:name="com.android.providers.media.MediaApplication"
            android:label="@string/picker_app_label"
            android:icon="@mipmap/picker_app_icon"
            android:allowBackup="false"
            android:supportsRtl="true"
            android:forceQueryable="true"
            android:usesCleartextTraffic="true"
            android:crossProfile="true">
        <provider
                android:name="com.android.providers.media.MediaProvider"
                android:authorities="media"
                android:grantUriPermissions="true"
                android:forceUriPermissions="true"
                android:exported="true" />

        <provider
                android:name="com.android.providers.media.MediaDocumentsProvider"
                android:label="@string/storage_description"
                android:authorities="com.android.providers.media.documents"
                android:grantUriPermissions="true"
                android:exported="true"
                android:permission="android.permission.MANAGE_DOCUMENTS">
            <intent-filter>
                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
            </intent-filter>
        </provider>

        <provider
            android:name="com.android.providers.media.photopicker.PhotoPickerProvider"
            android:authorities="com.android.providers.media.photopicker"
            android:exported="true"
            android:permission="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS" />

        <provider
            android:name="com.android.providers.media.photopicker.RemoteVideoPreviewProvider"
            android:process=":PhotoPicker"
            android:authorities="com.android.providers.media.remote_video_preview"
            android:permission="com.android.providers.media.permission.MANAGE_CLOUD_MEDIA_PROVIDERS"
            android:exported="true" />

        <!-- Don't initialise WorkManager by default at startup -->
        <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="${applicationId}.androidx-startup"
            android:exported="false"
            tools:node="merge">
            <meta-data
                android:name="androidx.work.WorkManagerInitializer"
                android:value="androidx.startup"
                tools:node="remove" />
        </provider>

        <!-- Handles database upgrades after OTAs, then disables itself -->
        <receiver android:name="com.android.providers.media.MediaUpgradeReceiver"
            android:exported="true">
            <!-- This broadcast is sent after the core system has finished
                 booting, before the home app is launched or BOOT_COMPLETED
                 is sent. -->
            <intent-filter>
                <action android:name="android.intent.action.PRE_BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.providers.media.MediaReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.LOCALE_CHANGED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
                <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
                <data android:scheme="package" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_MOUNTED" />
                <data android:scheme="file" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_SCANNER_SCAN_FILE" />
                <data android:scheme="file" />
            </intent-filter>
        </receiver>

        <service
            android:name="com.android.providers.media.IdleService"
            android:exported="true"
            android:permission="android.permission.BIND_JOB_SERVICE" />

        <service
            android:name="com.android.providers.media.MediaService"
            android:exported="true"
            android:permission="android.permission.BIND_JOB_SERVICE" />

        <service
            android:name=
                "com.android.providers.media.stableuris.job.StableUriIdleMaintenanceService"
            android:exported="true"
            android:permission="android.permission.BIND_JOB_SERVICE"/>

        <service android:name="com.android.providers.media.fuse.ExternalStorageServiceImpl"
                 android:exported="true"
                 android:permission="android.permission.BIND_EXTERNAL_STORAGE_SERVICE">
            <intent-filter>
                <action android:name="android.service.storage.ExternalStorageService" />
            </intent-filter>
        </service>

        <activity
                android:name="com.android.providers.media.PermissionActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:theme="@style/PickerDialogTheme"
                android:exported="false"
                android:excludeFromRecents="true" />

        <activity
                android:name="com.android.providers.media.CacheClearingActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:exported="true"
                android:theme="@style/CacheClearingAlertDialogTheme"
                android:finishOnCloseSystemDialogs="true"
                android:launchMode="singleTop"
                android:excludeFromRecents="true"
                android:visibleToInstantApps="true" >
            <intent-filter android:priority="100">
                <action android:name="android.os.storage.action.CLEAR_APP_CACHE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
                android:name="com.android.providers.media.photopicker.PhotoPickerActivity"
                android:process=":PhotoPicker"
                android:label="@string/picker_app_label"
                android:theme="@style/PickerDefaultTheme"
                android:exported="true"
                android:excludeFromRecents="true"
                android:colorMode="wideColorGamut">
            <intent-filter android:priority="100" >
                <action android:name="android.provider.action.PICK_IMAGES" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
                <data android:mimeType="video/*" />
            </intent-filter>
            <intent-filter android:priority="100" >
                <action android:name="android.provider.action.PICK_IMAGES" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.android.providers.media.photopicker.PhotoPickerSettingsActivity"
            android:theme="@style/PickerSettingsDefaultTheme"
            android:launchMode="singleInstance"
            android:process=":PhotoPicker"
            android:excludeFromRecents="false"
            android:exported="true"
            android:enabled="false" >

            <intent-filter android:priority="100" >
                <action android:name="android.provider.action.PICK_IMAGES_SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <!-- ============== BEGIN SYSTEM SETTINGS MENU ITEM SECTION ============== -->
            <intent-filter>
                <action android:name="com.android.settings.action.IA_SETTINGS"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

            <meta-data
                android:name="com.android.settings.category"
                android:value="com.android.settings.category.ia.apps"/>
            <meta-data
                android:name="com.android.settings.title"
                android:resource="@string/picker_settings_system_settings_menu_title"/>
            <meta-data
                android:name="com.android.settings.summary_uri"
                android:value="content://media/get_cloud_provider_label"/>
            <meta-data
                android:name="com.android.settings.profile"
                android:value="primary_profile_only"/>
            <!-- ============== END BEGIN SYSTEM SETTINGS MENU ITEM SECTION ============== -->
        </activity>

        <activity-alias
            android:name="com.android.providers.media.photopicker.PhotoPickerUserSelectActivity"
            android:targetActivity="com.android.providers.media.photopicker.PhotoPickerActivity"
            android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS"
            android:exported="true"
            android:excludeFromRecents="true"
            android:enabled="true">
            <intent-filter android:priority="100">
               <action android:name="android.provider.action.USER_SELECT_IMAGES_FOR_APP" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
                <data android:mimeType="video/*" />
            </intent-filter>
            <intent-filter android:priority="100">
                <action android:name="android.provider.action.USER_SELECT_IMAGES_FOR_APP" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

        <activity-alias
            android:name="com.android.providers.media.photopicker.PhotoPickerGetContentActivity"
            android:targetActivity="com.android.providers.media.photopicker.PhotoPickerActivity"
            android:exported="true"
            android:excludeFromRecents="true"
            android:enabled="true">
            <intent-filter android:priority="105" >
                <action android:name="android.intent.action.GET_CONTENT" />
                <category android:name="android.intent.category.OPENABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
                <data android:mimeType="video/*" />
            </intent-filter>
        </activity-alias>

    </application>
</manifest>
