AndroidManifest.xml

7.5 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    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />19    <uses-permission android:name="android.permission.CAMERA" />20    <!-- Peach ships outside the Play Store, so it installs its own updates via the21         system package installer. Still gated per-app by the user's "install unknown22         apps" grant — this permission only makes the ask possible. -->23    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />24    <uses-feature android:name="android.hardware.camera.any" android:required="false" />2526    <application27        android:name=".PeachApplication"28        android:allowBackup="false"29        android:fullBackupContent="@xml/backup_rules"30        android:dataExtractionRules="@xml/data_extraction_rules"31        android:icon="@mipmap/ic_launcher"32        android:label="@string/app_name"33        android:roundIcon="@mipmap/ic_launcher_round"34        android:supportsRtl="true"35        android:theme="@style/Theme.Peach.Splash">3637        <activity38            android:name=".MainActivity"39            android:exported="true"40            android:launchMode="singleTask"41            android:screenOrientation="unspecified"42            android:enableOnBackInvokedCallback="true"43            android:theme="@style/Theme.Peach">44            <intent-filter>45                <action android:name="android.intent.action.MAIN" />46                <category android:name="android.intent.category.LAUNCHER" />47            </intent-filter>48            <intent-filter>49                <action android:name="android.intent.action.VIEW" />50                <category android:name="android.intent.category.DEFAULT" />51                <category android:name="android.intent.category.BROWSABLE" />52                <data android:scheme="peach" />53            </intent-filter>54            <meta-data55                android:name="android.app.shortcuts"56                android:resource="@xml/shortcuts" />57        </activity>5859        <activity60            android:name=".ui.lock.BiometricUnlockActivity"61            android:exported="false"62            android:theme="@style/Theme.Peach" />6364        <activity65            android:name=".autofill.AutofillEntryPickerActivity"66            android:exported="false"67            android:excludeFromRecents="true"68            android:theme="@style/Theme.Peach.Transparent" />6970        <activity71            android:name=".passkeys.PasskeyCredentialSelectionActivity"72            android:exported="false"73            android:excludeFromRecents="true"74            android:theme="@style/Theme.Peach.Transparent" />7576        <!-- WorkManager is initialized on demand by PeachApplication (Configuration.Provider)77             so the update worker can be Hilt-injected; its default auto-initializer would78             race that and build a factory-less WorkManager first. -->79        <provider80            android:name="androidx.startup.InitializationProvider"81            android:authorities="${applicationId}.androidx-startup"82            android:exported="false"83            tools:node="merge">84            <meta-data85                android:name="androidx.work.WorkManagerInitializer"86                android:value="androidx.startup"87                tools:node="remove" />88        </provider>8990        <provider91            android:name="androidx.core.content.FileProvider"92            android:authorities="${applicationId}.fileprovider"93            android:exported="false"94            android:grantUriPermissions="true">95            <meta-data96                android:name="android.support.FILE_PROVIDER_PATHS"97                android:resource="@xml/file_paths" />98        </provider>99100        <!-- Keeps the phone dialable for sync; a browser extension can never101             listen, so this side has to stay reachable. -->102        <service103            android:name=".sync.PeachSyncService"104            android:exported="false"105            android:foregroundServiceType="dataSync" />106107        <receiver108            android:name=".sync.SyncNotificationDismissedReceiver"109            android:exported="false" />110111        <service112            android:name=".autofill.PeachAutofillService"113            android:permission="android.permission.BIND_AUTOFILL_SERVICE"114            android:exported="true"115            android:label="@string/autofill_service_label"116            android:settingsActivity=".MainActivity">117            <intent-filter>118                <action android:name="android.service.autofill.AutofillService" />119            </intent-filter>120            <meta-data121                android:name="android.autofill"122                android:resource="@xml/autofill_service_config" />123        </service>124125        <service126            android:name=".passkeys.PeachCredentialProviderService"127            android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE"128            android:exported="true"129            tools:targetApi="34">130            <intent-filter>131                <action android:name="android.service.credentials.CredentialProviderService" />132            </intent-filter>133            <meta-data134                android:name="android.credentials.provider"135                android:resource="@xml/credential_provider_config" />136        </service>137138        <service139            android:name=".qs.PeachTileService"140            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"141            android:exported="true">142            <intent-filter>143                <action android:name="android.service.quicksettings.action.QS_TILE" />144            </intent-filter>145        </service>146147        <receiver148            android:name=".widget.PeachSmallWidgetReceiver"149            android:exported="true">150            <intent-filter>151                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />152            </intent-filter>153            <meta-data154                android:name="android.appwidget.provider"155                android:resource="@xml/peach_small_widget_info" />156        </receiver>157158        <receiver159            android:name=".widget.PeachMediumWidgetReceiver"160            android:exported="true">161            <intent-filter>162                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />163            </intent-filter>164            <meta-data165                android:name="android.appwidget.provider"166                android:resource="@xml/peach_medium_widget_info" />167        </receiver>168169    </application>170</manifest>