itachi1706/CheesecakeUtilities

View on GitHub
app/src/main/AndroidManifest.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <!-- TODO: Verify if this actually need -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!-- TODO: Remove after BackupHelper no longer use -->
    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        tools:replace="android:maxSdkVersion"
        android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.USE_BIOMETRIC" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission
        android:name="android.permission.SYSTEM_ALERT_WINDOW"
        android:maxSdkVersion="25" />
    <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
    <uses-permission
        android:name="android.permission.WRITE_SECURE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission
        android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.NFC" />

    <uses-feature android:name="android.hardware.nfc" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.autofocus"
        android:required="false" />

    <!-- TODO: We have requestLegacyExternalStorage for now until we migrate to SAF -->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"

        android:requestLegacyExternalStorage="true"
        android:preserveLegacyExternalStorage="true"
        tools:ignore="AllowBackup,GoogleAppIndexingWarning,UnusedAttribute">
        <service
            android:name=".modules.toggle.services.QSPrivateDNSTileService"
            android:icon="@drawable/ic_dns"
            android:label="Private DNS"
            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
            android:enabled="false"
            android:exported="true">
            <intent-filter>
                <action android:name="android.service.quicksettings.action.QS_TILE" />
            </intent-filter>
        </service>

        <service
            android:name=".modules.toggle.services.QSForce90HzTileService"
            android:icon="@drawable/ic_force_90hz"
            android:label="Force 90Hz Display"
            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
            android:enabled="false"
            android:exported="true">
            <intent-filter>
                <action android:name="android.service.quicksettings.action.QS_TILE" />
            </intent-filter>
        </service>

        <activity
            android:exported="false"
            android:name=".modules.toggle.ToggleActivity"
            android:label="System Toggles">
            <intent-filter>
                <action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
            </intent-filter>
        </activity>
        <activity
            android:exported="true"
            android:name=".SplashActivity"
            android:theme="@style/AppTheme.Launcher">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/static_shortcuts" />
        </activity>

        <meta-data
            android:name="android.allow_multiple_resumed_activities"
            android:value="true" />
        <meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

        <activity
            android:name=".MainMenuActivity"
            android:theme="@style/AppTheme.NoAppBar" />
        <activity
            android:name=".modules.StringToHexBin"
            android:exported="false"
            android:label="@string/bin_hex_title_full" />
        <activity
            android:name=".GeneralSettingsActivity"
            android:label="@string/title_activity_general_settings" />
        <activity
            android:name=".UtilitySettingsActivity"
            android:label="Utility Specific Settings" />

        <activity
            android:name=".modules.htcserialidentification.HtcSerialIdentificationActivity"
            android:exported="false"
            android:label="HTC S/N Identification" />
        <activity
            android:name=".redirectapp.fanfictionReader.FanfictionReaderRedirectApp"
            android:exported="false"
            android:theme="@style/AppTheme.Invisible" />
        <activity
            android:name=".modules.CameraDisablerActivity"
            android:exported="false"
            android:label="Disable Camera" />

        <receiver
            android:exported="false"
            android:name=".modules.CameraDisablerActivity$DeviceAdminReceiver"
            android:description="@string/camera_disable_desc"
            android:label="@string/camera_disable_device_admin_label"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/camera_device_admin" />

            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>

        <activity
            android:name=".modules.listapplications.ListApplicationsActivity"
            android:exported="false"
            android:label="Application List"
            android:theme="@style/AppTheme.NoAppBar" />
        <activity
            android:name=".modules.ordcountdown.ORDActivity"
            android:exported="false"
            android:label="ORD Countdown" />
        <activity
            android:name=".modules.ordcountdown.ORDSettingsActivity"
            android:label="@string/ord_settings_label" />
        <activity
            android:exported="true"
            android:name=".modules.ordcountdown.widgetProviders.ORDWidgetConfigurationActivity"
            android:label="Configure ORD Event Countdown Widget">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>

        <service
            android:name=".modules.ordcountdown.widgetProviders.EventCountdownWidgetProvider$UpdateWidgetService"
            android:exported="false"
            android:label="Update ORD Widgets"
            tools:ignore="InnerclassSeparator" />

        <receiver
            android:exported="false"
            android:name=".modules.ordcountdown.widgetProviders.EventCountdownWidgetProvider"
            android:label="ORD Event Countdown"
            tools:ignore="InnerclassSeparator">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/eventcountdown_widget_provider_info" />
        </receiver>

        <activity
            android:name=".modules.BmiCalculatorActivity"
            android:exported="false"
            android:label="BMI Calculator" />
        <activity
            android:name=".modules.ipptcalculator.IpptCalculatorActivity"
            android:exported="false"
            android:label="IPPT Calculator" />
        <activity
            android:name=".modules.ipptcalculator.IpptScoringActivity"
            android:label="IPPT Scoreboard" />
        <activity
            android:name=".modules.listapplications.ListApplicationsDetailActivity"
            android:label="App Information" />
        <activity
            android:name=".features.biometric_auth.AuthenticationActivity"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".modules.systeminformation.InitActivity"
            android:exported="false" />
        <activity
            android:name=".modules.systeminformation.ParentFragmentActivity"
            android:label="System Information"
            android:theme="@style/LegacyLightThemeNoAppBar" />

        <service
            android:exported="false"
            android:name=".modules.navbarcustomization.NavBarService"
            android:label="Customize Navigation Bar"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            android:process=":NavBarCustomizer">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>

            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/accessibility_service_config" />
        </service>

        <activity
            android:name=".modules.navbarcustomization.NavbarConfigurationActivity"
            android:exported="false"
            android:label="Navigation Bar Customizer" />
        <activity
            android:name=".games.tictactoe.TicTacToeActivity"
            android:exported="false"
            android:label="Tic Tac Toe" />
        <activity
            android:name=".features.utility_management.ManageUtilityActivity"
            android:label="Utilities Management" />

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/app_restore_provider_paths" />
        </provider>

        <activity
            android:name=".modules.listapplications.ListApplicationsApiGraphActivity"
            android:label="Graph by API Level" />
        <activity
            android:name=".modules.safetynet.SafetyNetActivity"
            android:exported="false"
            android:label="SafetyNet Validator" />
        <activity
            android:name=".modules.unicodekeyboard.UnicodeActivity"
            android:exported="false"
            android:label="Unicode Emoticons"
            android:theme="@style/AppTheme.NoAppBar" />
        <activity
            android:name=".games.chromiumtrex.ChromiumTRexActivity"
            android:exported="false"
            android:label="Chrome T-Rex Game" />
        <activity
            android:name=".LaunchTileSettingsActivity"
            android:exported="false" />
        <activity
            android:name=".modules.connectivityquiethours.ConnectivityQuietHoursActivity"
            android:exported="false"
            android:label="Connectivity Quiet Hours Configuration" />

        <receiver
            android:name=".modules.connectivityquiethours.receivers.BluetoothToggleReceiver"
            android:enabled="true" />
        <receiver
            android:name=".modules.connectivityquiethours.receivers.WifiToggleReceiver"
            android:enabled="true" />
        <receiver android:name=".modules.connectivityquiethours.receivers.DeleteNotificationIntent" android:exported="false">
            <intent-filter>
                <action android:name="subitem_cancelled" />
                <action android:name="summary_cancelled" />
            </intent-filter>
        </receiver>
        <receiver
            android:exported="false"
            android:name=".modules.connectivityquiethours.receivers.BootRescheduleToggleReceiver"
            android:enabled="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <activity android:name=".CreateShortcuts" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".modules.vehiclemileagetracker.VehicleMileageMainActivity"
            android:label="Vehicle Mileage Tracker" />
        <activity
            android:name=".modules.vehiclemileagetracker.AddNewVehicleActivity"
            android:label="Add a new Vehicle" />
        <activity
            android:name=".modules.vehiclemileagetracker.AddNewMileageRecordActivity"
            android:label="Add a new Mileage Record" />
        <activity
            android:name=".modules.vehiclemileagetracker.ViewVehicleActivity"
            android:label="View All Vehicles" />
        <activity
            android:name=".modules.vehiclemileagetracker.VehicleMileageStatisticsActivity"
            android:label="Mileage Statistics"
            android:theme="@style/AppTheme.NoAppBar" />

        <meta-data
            android:name="com.google.firebase.ml.vision.DEPENDENCIES"
            android:value="barcode" />

        <activity
            android:name=".modules.barcodetools.BarcodeParentActivity"
            android:exported="false"
            android:label="Barcode Tools"
            android:theme="@style/AppTheme.NoAppBar" />
        <activity
            android:name=".modules.barcodetools.BarcodeCaptureActivity"
            android:label="Scan Barcode" />
        <activity
            android:name=".modules.lyricfinder.LyricFinderActivity"
            android:exported="false"
            android:label="Now Playing Lyrics" />

        <service
            android:name=".modules.lyricfinder.LyricNotificationListener"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
            android:process=":LyricNotifListener">
            <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService" />
            </intent-filter>
        </service>

        <activity
            android:name=".modules.vehiclemileagetracker.GenerateMileageRecordActivity"
            android:label="Generate Mileage Report" />
        <activity
            android:name=".modules.sgpsi.PsiActivity"
            android:exported="false"
            android:label="SG Weather (PSI Only)" />
        <activity
            android:name=".modules.sgpsi.PsiGraphActivity"
            android:label="SG PSI Graphs"
            android:theme="@style/AppTheme.NoAppBar" />
        <!--
             The API key for Google Maps-based APIs is defined as a string resource.
             (See the file "res/values/google_maps_api.xml").
             Note that the API key is linked to the encryption key used to sign the APK.
             You need a different API key for each encryption key, including the release key that is used to
             sign the APK for publishing.
             You can define the keys for the debug and release targets in src/debug/ and src/release/.
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" /> <!-- Used to fix the error of no launchMode override -->
        <activity
            android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
            android:excludeFromRecents="true"
            android:exported="true"
            android:launchMode="singleTask"
            android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            tools:replace="android:launchMode" />
        <activity
            android:exported="true"
            android:name=".modules.cepasreader.CEPASActivity"
            android:configChanges="keyboardHidden|orientation"
            android:label="CEPAS Reader"
            android:screenOrientation="sensorPortrait"
            tools:ignore="AppLinkUrlError,LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.EDIT" />
                <action android:name="android.intent.action.PICK" />

                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="vnd.android.cursor.dir/${applicationId}.card" />
            </intent-filter>
        </activity>
        <activity
            android:name=".modules.whoislookup.WhoisLookupActivity"
            android:label="Domain Whois Query" />
        <activity
            android:exported="true"
            android:name=".modules.apkmirrordownloader.APKMirrorActivity"
            android:configChanges="orientation|screenSize"
            android:hardwareAccelerated="true"
            android:label="APKMirror Downloader"
            android:supportsPictureInPicture="false"
            android:theme="@style/ApkMirrorSplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:host="www.apkmirror.com" />
            </intent-filter>
        </activity>
        <activity android:name=".modules.vehiclemileagetracker.VehicleMileageTrackerInitActivity" />
        <activity
            android:name=".FirebaseLoginActivity"
            android:label="@string/label_firebase_sign_in" />
        <activity
            android:name=".modules.gpacalculator.MainViewActivity"
            android:label="@string/title_activity_gpa_calculator_main"
            android:theme="@style/AppTheme.NoAppBar" />
        <activity
            android:name=".modules.gpacalculator.InitActivity"
            android:label="@string/title_activity_gpa_calculator_main" />
        <activity
            android:name=".modules.gpacalculator.ScoringActivity"
            android:label="View Scoring Tiers" />
        <activity
            android:name=".modules.gpacalculator.AddInstitutionActivity"
            android:label="Add an Institution" />
        <activity
            android:name=".modules.gpacalculator.AddSemesterActivity"
            android:label="Add a Semester" />
        <activity
            android:name=".modules.gpacalculator.AddModuleActivity"
            android:label="Add a Module" />
        <activity
            android:name=".modules.cameraviewer.CameraActivity"
            android:label="Camera Viewer" />
        <activity
            android:name=".modules.barcodetools.BarcodeHistoryActivity"
            android:label="View Barcode History"
            android:theme="@style/AppTheme.NoAppBar" />
    </application>

</manifest>