AndroidManifest.xml

7.3 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        <service107            android:name=".autofill.PeachAutofillService"108            android:permission="android.permission.BIND_AUTOFILL_SERVICE"109            android:exported="true"110            android:label="@string/autofill_service_label"111            android:settingsActivity=".MainActivity">112            <intent-filter>113                <action android:name="android.service.autofill.AutofillService" />114            </intent-filter>115            <meta-data116                android:name="android.autofill"117                android:resource="@xml/autofill_service_config" />118        </service>119120        <service121            android:name=".passkeys.PeachCredentialProviderService"122            android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE"123            android:exported="true"124            tools:targetApi="34">125            <intent-filter>126                <action android:name="android.service.credentials.CredentialProviderService" />127            </intent-filter>128            <meta-data129                android:name="android.credentials.provider"130                android:resource="@xml/credential_provider_config" />131        </service>132133        <service134            android:name=".qs.PeachTileService"135            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"136            android:exported="true">137            <intent-filter>138                <action android:name="android.service.quicksettings.action.QS_TILE" />139            </intent-filter>140        </service>141142        <receiver143            android:name=".widget.PeachSmallWidgetReceiver"144            android:exported="true">145            <intent-filter>146                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />147            </intent-filter>148            <meta-data149                android:name="android.appwidget.provider"150                android:resource="@xml/peach_small_widget_info" />151        </receiver>152153        <receiver154            android:name=".widget.PeachMediumWidgetReceiver"155            android:exported="true">156            <intent-filter>157                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />158            </intent-filter>159            <meta-data160                android:name="android.appwidget.provider"161                android:resource="@xml/peach_medium_widget_info" />162        </receiver>163164    </application>165</manifest>