AndroidManifest.xml

8.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    <!-- Autofill verifies the signing certificate of whichever browser owns6         the framework AssistStructure. Android 11+ filters PackageManager7         lookups unless that browser role is declared visible. -->8    <queries>9        <intent>10            <action android:name="android.intent.action.VIEW" />11            <category android:name="android.intent.category.BROWSABLE" />12            <data android:scheme="https" />13        </intent>14    </queries>1516    <uses-permission android:name="android.permission.INTERNET" />17    <uses-permission android:name="android.permission.VIBRATE" />18    <uses-permission android:name="android.permission.USE_BIOMETRIC" />19    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />20    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />21    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />22    <!-- Android 14+ requires the specific type alongside the generic permission. -->23    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />24    <!-- Doze defers network work even for a foreground service, which would make25         an already-paired browser's reconnect time out with no visible cause.26         Play-policy-restricted: only ever requested from an explicit user tap, and27         never required — see the distribution note in sync/BatteryExemption.kt. -->28    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />29    <uses-permission android:name="android.permission.CAMERA" />30    <!-- Peach ships outside the Play Store, so it installs its own updates via the31         system package installer. Still gated per-app by the user's "install unknown32         apps" grant — this permission only makes the ask possible. -->33    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />34    <uses-feature android:name="android.hardware.camera.any" android:required="false" />3536    <application37        android:name=".PeachApplication"38        android:allowBackup="false"39        android:fullBackupContent="@xml/backup_rules"40        android:dataExtractionRules="@xml/data_extraction_rules"41        android:icon="@mipmap/ic_launcher"42        android:label="@string/app_name"43        android:roundIcon="@mipmap/ic_launcher_round"44        android:supportsRtl="true"45        android:theme="@style/Theme.Peach.Splash">4647        <activity48            android:name=".MainActivity"49            android:exported="true"50            android:launchMode="singleTask"51            android:screenOrientation="unspecified"52            android:enableOnBackInvokedCallback="true"53            android:theme="@style/Theme.Peach">54            <intent-filter>55                <action android:name="android.intent.action.MAIN" />56                <category android:name="android.intent.category.LAUNCHER" />57            </intent-filter>58            <meta-data59                android:name="android.app.shortcuts"60                android:resource="@xml/shortcuts" />61        </activity>626364        <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        <activity77            android:name=".credentials.PasswordCredentialSelectionActivity"78            android:exported="false"79            android:excludeFromRecents="true"80            android:theme="@style/Theme.Peach.Transparent" />8182        <activity83            android:name=".credentials.CredentialProviderUnlockActivity"84            android:exported="false"85            android:excludeFromRecents="true"86            android:theme="@style/Theme.Peach.Transparent" />8788        <!-- WorkManager is initialized on demand by PeachApplication (Configuration.Provider)89             so the update worker can be Hilt-injected; its default auto-initializer would90             race that and build a factory-less WorkManager first. -->91        <provider92            android:name="androidx.startup.InitializationProvider"93            android:authorities="${applicationId}.androidx-startup"94            android:exported="false"95            tools:node="merge">96            <meta-data97                android:name="androidx.work.WorkManagerInitializer"98                android:value="androidx.startup"99                tools:node="remove" />100        </provider>101102        <provider103            android:name="androidx.core.content.FileProvider"104            android:authorities="${applicationId}.fileprovider"105            android:exported="false"106            android:grantUriPermissions="true">107            <meta-data108                android:name="android.support.FILE_PROVIDER_PATHS"109                android:resource="@xml/file_paths" />110        </provider>111112        <!-- Keeps the phone dialable for sync. This is continuous encrypted113             device reachability, not Android's time-limited dataSync work. -->114        <service115            android:name=".sync.PeachSyncService"116            android:exported="false"117            android:foregroundServiceType="specialUse">118            <property119                android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"120                android:value="continuous encrypted sync reachability for paired Peach devices" />121        </service>122123        <receiver124            android:name=".sync.SyncNotificationDismissedReceiver"125            android:exported="false" />126127        <receiver128            android:name=".sync.BootReceiver"129            android:exported="false">130            <intent-filter>131                <action android:name="android.intent.action.BOOT_COMPLETED" />132            </intent-filter>133        </receiver>134135        <service136            android:name=".autofill.PeachAutofillService"137            android:permission="android.permission.BIND_AUTOFILL_SERVICE"138            android:exported="true"139            android:label="@string/autofill_service_label"140            android:settingsActivity=".MainActivity">141            <intent-filter>142                <action android:name="android.service.autofill.AutofillService" />143            </intent-filter>144            <meta-data145                android:name="android.autofill"146                android:resource="@xml/autofill_service_config" />147        </service>148149        <service150            android:name=".passkeys.PeachCredentialProviderService"151            android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE"152            android:exported="true"153            tools:targetApi="34">154            <intent-filter>155                <action android:name="android.service.credentials.CredentialProviderService" />156            </intent-filter>157            <meta-data158                android:name="android.credentials.provider"159                android:resource="@xml/credential_provider_config" />160        </service>161162        <service163            android:name=".qs.PeachTileService"164            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"165            android:exported="true">166            <intent-filter>167                <action android:name="android.service.quicksettings.action.QS_TILE" />168            </intent-filter>169        </service>170171        <receiver172            android:name=".widget.PeachSmallWidgetReceiver"173            android:exported="true">174            <intent-filter>175                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />176            </intent-filter>177            <meta-data178                android:name="android.appwidget.provider"179                android:resource="@xml/peach_small_widget_info" />180        </receiver>181182        <receiver183            android:name=".widget.PeachMediumWidgetReceiver"184            android:exported="true">185            <intent-filter>186                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />187            </intent-filter>188            <meta-data189                android:name="android.appwidget.provider"190                android:resource="@xml/peach_medium_widget_info" />191        </receiver>192193    </application>194</manifest>