AndroidManifest.xml

7.9 KB · raw

1<?xml version="1.0" encoding="utf-8"?>2<manifest xmlns:android="http://schemas.android.com/apk/res/android"3    xmlns:tools="http://schemas.android.com/tools">45    <uses-permission android:name="android.permission.INTERNET" />6    <!-- mDNS/NSD peer discovery for the C7 LAN sync transport -->7    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />8    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />9    <uses-permission android:name="android.permission.VIBRATE" />10    <uses-permission android:name="android.permission.USE_BIOMETRIC" />11    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />12    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />13    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />14    <!-- Android 14+ requires the specific type alongside the generic permission. -->15    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />16    <!-- Doze defers network work even for a foreground service, which would make17         an already-paired browser's reconnect time out with no visible cause.18         Play-policy-restricted: only ever requested from an explicit user tap, and19         never required — see the distribution note in sync/BatteryExemption.kt. -->20    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />21    <uses-permission android:name="android.permission.CAMERA" />22    <!-- Peach ships outside the Play Store, so it installs its own updates via the23         system package installer. Still gated per-app by the user's "install unknown24         apps" grant — this permission only makes the ask possible. -->25    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />26    <uses-feature android:name="android.hardware.camera.any" android:required="false" />2728    <application29        android:name=".PeachApplication"30        android:allowBackup="false"31        android:fullBackupContent="@xml/backup_rules"32        android:dataExtractionRules="@xml/data_extraction_rules"33        android:icon="@mipmap/ic_launcher"34        android:label="@string/app_name"35        android:roundIcon="@mipmap/ic_launcher_round"36        android:supportsRtl="true"37        android:theme="@style/Theme.Peach.Splash">3839        <activity40            android:name=".MainActivity"41            android:exported="true"42            android:launchMode="singleTask"43            android:screenOrientation="unspecified"44            android:enableOnBackInvokedCallback="true"45            android:theme="@style/Theme.Peach">46            <intent-filter>47                <action android:name="android.intent.action.MAIN" />48                <category android:name="android.intent.category.LAUNCHER" />49            </intent-filter>50            <intent-filter>51                <action android:name="android.intent.action.VIEW" />52                <category android:name="android.intent.category.DEFAULT" />53                <category android:name="android.intent.category.BROWSABLE" />54                <data android:scheme="peach" />55            </intent-filter>56            <meta-data57                android:name="android.app.shortcuts"58                android:resource="@xml/shortcuts" />59        </activity>6061        <activity62            android:name=".ui.lock.BiometricUnlockActivity"63            android:exported="false"64            android:theme="@style/Theme.Peach" />6566        <activity67            android:name=".autofill.AutofillEntryPickerActivity"68            android:exported="false"69            android:excludeFromRecents="true"70            android:theme="@style/Theme.Peach.Transparent" />7172        <activity73            android:name=".passkeys.PasskeyCredentialSelectionActivity"74            android:exported="false"75            android:excludeFromRecents="true"76            android:theme="@style/Theme.Peach.Transparent" />7778        <!-- WorkManager is initialized on demand by PeachApplication (Configuration.Provider)79             so the update worker can be Hilt-injected; its default auto-initializer would80             race that and build a factory-less WorkManager first. -->81        <provider82            android:name="androidx.startup.InitializationProvider"83            android:authorities="${applicationId}.androidx-startup"84            android:exported="false"85            tools:node="merge">86            <meta-data87                android:name="androidx.work.WorkManagerInitializer"88                android:value="androidx.startup"89                tools:node="remove" />90        </provider>9192        <provider93            android:name="androidx.core.content.FileProvider"94            android:authorities="${applicationId}.fileprovider"95            android:exported="false"96            android:grantUriPermissions="true">97            <meta-data98                android:name="android.support.FILE_PROVIDER_PATHS"99                android:resource="@xml/file_paths" />100        </provider>101102        <!-- Keeps the phone dialable for sync; a browser extension can never103             listen, so this side has to stay reachable. -->104        <service105            android:name=".sync.PeachSyncService"106            android:exported="false"107            android:foregroundServiceType="dataSync" />108109        <receiver110            android:name=".sync.SyncNotificationDismissedReceiver"111            android:exported="false" />112113        <receiver114            android:name=".sync.BootReceiver"115            android:exported="false">116            <intent-filter>117                <action android:name="android.intent.action.BOOT_COMPLETED" />118            </intent-filter>119        </receiver>120121        <service122            android:name=".autofill.PeachAutofillService"123            android:permission="android.permission.BIND_AUTOFILL_SERVICE"124            android:exported="true"125            android:label="@string/autofill_service_label"126            android:settingsActivity=".MainActivity">127            <intent-filter>128                <action android:name="android.service.autofill.AutofillService" />129            </intent-filter>130            <meta-data131                android:name="android.autofill"132                android:resource="@xml/autofill_service_config" />133        </service>134135        <service136            android:name=".passkeys.PeachCredentialProviderService"137            android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE"138            android:exported="true"139            tools:targetApi="34">140            <intent-filter>141                <action android:name="android.service.credentials.CredentialProviderService" />142            </intent-filter>143            <meta-data144                android:name="android.credentials.provider"145                android:resource="@xml/credential_provider_config" />146        </service>147148        <service149            android:name=".qs.PeachTileService"150            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"151            android:exported="true">152            <intent-filter>153                <action android:name="android.service.quicksettings.action.QS_TILE" />154            </intent-filter>155        </service>156157        <receiver158            android:name=".widget.PeachSmallWidgetReceiver"159            android:exported="true">160            <intent-filter>161                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />162            </intent-filter>163            <meta-data164                android:name="android.appwidget.provider"165                android:resource="@xml/peach_small_widget_info" />166        </receiver>167168        <receiver169            android:name=".widget.PeachMediumWidgetReceiver"170            android:exported="true">171            <intent-filter>172                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />173            </intent-filter>174            <meta-data175                android:name="android.appwidget.provider"176                android:resource="@xml/peach_medium_widget_info" />177        </receiver>178179    </application>180</manifest>