<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <!-- Health Connect -->
    <uses-permission android:name="android.permission.health.WRITE_STEPS"/>
    <uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
    <uses-permission android:name="android.permission.health.WRITE_SLEEP"/>
    <uses-permission android:name="android.permission.health.WRITE_EXERCISE"/>
    <uses-permission android:name="android.permission.health.WRITE_EXERCISE_ROUTE"/>
    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" tools:node="remove" />
    <!-- Mixpanel -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
        android:name=".MainApplication"
        android:usesCleartextTraffic="true"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.Material.NoActionBar">
        <meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="true" />
        <activity
            android:exported="true"
            android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|mnc|colorMode|density|fontScale|fontWeightAdjustment|keyboard|layoutDirection|locale|mcc|navigation|smallestScreenSize|touchscreen|uiMode"
            android:name=".MainActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter android:label="@string/intent_filter_notion_login">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="voiceapp" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="pebble" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="pebblejs" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="content" />
                <data android:scheme="file" />
                <data android:host="*" />
                <data android:mimeType="*/*" />
                <data android:pathPattern=".*\.pbl" />
                <data android:pathPattern=".*\.pbw" />
                <data android:pathPattern=".*\.pbz" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" android:scheme="content"/>
            </intent-filter>
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" />
                <data android:scheme="http" />
                <data android:host="cloud.repebble.com" />
                <data android:path="/githubAuth" />
            </intent-filter>
        </activity>
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>
        <service
            android:name=".BugReportService"
            android:enabled="true"
            android:exported="false"
            android:foregroundServiceType="connectedDevice" />
        <service
            android:name=".PebbleService"
            android:foregroundServiceType="connectedDevice"
            android:exported="false" />
        <service android:name="coredevices.util.models.ModelDownloadService"
            android:permission="android.permission.BIND_JOB_SERVICE"
            android:exported="false">
        </service>
        <!--
            Workaround for a bug in com.viktormykhailiv:health-kmp 1.0.1:
            HealthConnectPermissionActivity stores its permission set in intent extras and
            calls requestPermissions.launch(permissions) in onCreate. If Android recreates
            the activity (process death, resume from recents) the extras are lost, the set
            is empty, and HealthPermissionsRequestContract throws
            "At least one permission is required!" — crashing the app. noHistory +
            excludeFromRecents prevent the activity from being resumed/recreated without
            its original launching intent.
        -->
        <activity
            android:name="com.viktormykhailiv.kmp.health.HealthConnectPermissionActivity"
            android:noHistory="true"
            android:excludeFromRecents="true" />
        <activity-alias
            android:name="ViewPermissionUsageActivity"
            android:exported="true"
            android:targetActivity=".MainActivity"
            android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
            <intent-filter>
                <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
                <category android:name="android.intent.category.HEALTH_PERMISSIONS" />
            </intent-filter>
        </activity-alias>
        <!--
            Required by the standalone Health Connect APK on Android 13. Without an activity
            handling this intent, Health Connect silently denies permission grants
            (MOB-6628, MOB-6731). Android 14+ uses VIEW_PERMISSION_USAGE above instead.
        -->
        <activity-alias
            android:name="HealthPermissionsRationaleActivity"
            android:exported="true"
            android:targetActivity=".MainActivity">
            <intent-filter>
                <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
            </intent-filter>
        </activity-alias>
    </application>
</manifest>