5.1 KiB · text History 78cc6fd
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <!-- Asked for when a run is first watched, not at launch: the app
         has nothing to say until then. -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <uses-feature android:name="android.hardware.camera" android:required="false"/>
    <!-- A TV, for the live CI wall: no touchscreen, and a home screen of
         its own (the leanback launcher) to be found on. Neither is
         required, so phones and tablets install it as before. -->
    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
    <uses-feature android:name="android.software.leanback" android:required="false"/>

    <application
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher"
        android:banner="@drawable/tv_banner"
        android:allowBackup="false"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:supportsRtl="true"
        android:theme="@style/Theme.GitGud"
        android:usesCleartextTraffic="true">

        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTask"
            android:theme="@style/Theme.GitGud">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>

            <!-- A TV's home screen. Opens straight onto the CI wall. -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
            </intent-filter>

            <!-- gitgud://wall — the "Live CI wall" launcher shortcut. -->
            <intent-filter android:autoVerify="false">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="gitgud" android:host="wall"/>
            </intent-filter>

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

            <!--
                gitgud://pair?base=<server>&token=<api-token> — scanned from
                Settings → API tokens after minting a token with the "Mobile
                app" scope bundle, or tapped from a note. Resolves to
                PairScreen via the runtime intent dispatch in MainActivity.
            -->
            <intent-filter android:autoVerify="false">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="gitgud" android:host="pair"/>
            </intent-filter>

            <!-- Where a "run finished" notification lands: straight at
                 the run it is about. -->
            <intent-filter android:autoVerify="false">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="gitgud" android:host="run"/>
            </intent-filter>

            <!-- A circle on the CI widget: the repository it stands for. -->
            <intent-filter android:autoVerify="false">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="gitgud" android:host="repo"/>
            </intent-filter>
        </activity>

        <!-- The home-screen CI widget, after the Plasma one. -->
        <receiver
            android:name=".widget.CiWidgetProvider"
            android:label="@string/widget_ci_name"
            android:exported="false">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            </intent-filter>
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/ci_widget_info"/>
        </receiver>

        <!-- Its own task, so choosing what a widget watches doesn't drag
             the app's back stack along with it. -->
        <activity
            android:name=".widget.CiWidgetConfigActivity"
            android:exported="true"
            android:excludeFromRecents="true"
            android:taskAffinity=""
            android:theme="@style/Theme.GitGud">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
            </intent-filter>
        </activity>
    </application>
</manifest>