AndroidManifest.xml

7.4 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="false"30        android:icon="@mipmap/ic_launcher"31        android:label="@string/app_name"32        android:roundIcon="@mipmap/ic_launcher_round"33        android:supportsRtl="true"34        android:theme="@style/Theme.Peach.Splash">3536        <activity37            android:name=".MainActivity"38            android:exported="true"39            android:launchMode="singleTask"40            android:screenOrientation="unspecified"41            android:enableOnBackInvokedCallback="true"42            android:theme="@style/Theme.Peach">43            <intent-filter>44                <action android:name="android.intent.action.MAIN" />45                <category android:name="android.intent.category.LAUNCHER" />46            </intent-filter>47            <intent-filter>48                <action android:name="android.intent.action.VIEW" />49                <category android:name="android.intent.category.DEFAULT" />50                <category android:name="android.intent.category.BROWSABLE" />51                <data android:scheme="peach" />52            </intent-filter>53            <meta-data54                android:name="android.app.shortcuts"55                android:resource="@xml/shortcuts" />56        </activity>5758        <activity59            android:name=".ui.lock.BiometricUnlockActivity"60            android:exported="false"61            android:theme="@style/Theme.Peach" />6263        <activity64            android:name=".autofill.AutofillEntryPickerActivity"65            android:exported="false"66            android:excludeFromRecents="true"67            android:theme="@style/Theme.Peach.Transparent" />6869        <activity70            android:name=".passkeys.PasskeyCredentialSelectionActivity"71            android:exported="false"72            android:excludeFromRecents="true"73            android:theme="@style/Theme.Peach.Transparent" />7475        <!-- WorkManager is initialized on demand by PeachApplication (Configuration.Provider)76             so the update worker can be Hilt-injected; its default auto-initializer would77             race that and build a factory-less WorkManager first. -->78        <provider79            android:name="androidx.startup.InitializationProvider"80            android:authorities="${applicationId}.androidx-startup"81            android:exported="false"82            tools:node="merge">83            <meta-data84                android:name="androidx.work.WorkManagerInitializer"85                android:value="androidx.startup"86                tools:node="remove" />87        </provider>8889        <provider90            android:name="androidx.core.content.FileProvider"91            android:authorities="${applicationId}.fileprovider"92            android:exported="false"93            android:grantUriPermissions="true">94            <meta-data95                android:name="android.support.FILE_PROVIDER_PATHS"96                android:resource="@xml/file_paths" />97        </provider>9899        <!-- Keeps the phone dialable for sync; a browser extension can never100             listen, so this side has to stay reachable. -->101        <service102            android:name=".sync.PeachSyncService"103            android:exported="false"104            android:foregroundServiceType="dataSync" />105106        <receiver107            android:name=".sync.SyncNotificationDismissedReceiver"108            android:exported="false" />109110        <service111            android:name=".autofill.PeachAutofillService"112            android:permission="android.permission.BIND_AUTOFILL_SERVICE"113            android:exported="true"114            android:label="@string/autofill_service_label"115            android:settingsActivity=".MainActivity">116            <intent-filter>117                <action android:name="android.service.autofill.AutofillService" />118            </intent-filter>119            <meta-data120                android:name="android.autofill"121                android:resource="@xml/autofill_service_config" />122        </service>123124        <service125            android:name=".passkeys.PeachCredentialProviderService"126            android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE"127            android:exported="true"128            tools:targetApi="34">129            <intent-filter>130                <action android:name="android.service.credentials.CredentialProviderService" />131            </intent-filter>132            <meta-data133                android:name="android.credentials.provider"134                android:resource="@xml/credential_provider_config" />135        </service>136137        <service138            android:name=".qs.PeachTileService"139            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"140            android:exported="true">141            <intent-filter>142                <action android:name="android.service.quicksettings.action.QS_TILE" />143            </intent-filter>144        </service>145146        <receiver147            android:name=".widget.PeachSmallWidgetReceiver"148            android:exported="true">149            <intent-filter>150                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />151            </intent-filter>152            <meta-data153                android:name="android.appwidget.provider"154                android:resource="@xml/peach_small_widget_info" />155        </receiver>156157        <receiver158            android:name=".widget.PeachMediumWidgetReceiver"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_medium_widget_info" />166        </receiver>167168    </application>169</manifest>