[Résolu] Problème pour adapter une application à Android TV : l'activité qui se lance n'est pas la bonne

Bonjour à tous !

J’ai créé un jeu pour smartphones que je souhaiterai adapter à Android TV.

Après avoir pris quelques renseignements, je prépare le terrain en créant une activité (TvActivity.kt) et un layout (activity_tv.xml) dédié.

Je continue à suivre les indications de la page https://developer.android.com/training/tv/start/start et me retrouve donc avec ce fichier :
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.bricehardy.TicTacBomb">

    <uses-feature android:name="android.software.leanback"
            android:required="false" />
    <uses-feature android:name="android.hardware.touchscreen"
            android:required="false" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:banner="@drawable/banner"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme"
            android:networkSecurityConfig="@xml/network_security_config"
            android:isGame="true">

            <activity
                    android:name=".MainActivity"
                    android:screenOrientation="portrait">
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />
                            <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
            </activity>
            <activity
                    android:name=".TvActivity"
                    android:label="@string/app_name">
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />
                            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
                        </intent-filter>
            </activity>
            <activity
                    android:name=".SettingsActivity"
                    android:screenOrientation="portrait" />

            <meta-data
                android:name="preloaded_fonts"
                android:resource="@array/preloaded_fonts" />
    </application>
</manifest>

Et je m’arrache les cheveux depuis tout à l’heure, car peu importe l’appareil sur lequel je lance l’application, c’est le fameux TvActivity qui est ouvert en premier alors qu’il ne devrait se lancer que sur Android TV…

Merci d’avance pour votre aide !

Et peut-on interroger le device pour savoir sur lequel on est ? Voire mettre dans le Manifest quelque chose pour régler ça ?

Sur le principe, ça doit l’être. Mais ça ne corrige que la conséquence, pas la cause :confused:

Enfin !

Après quelques recherches et essais, il me semble avoir trouvé la solution.
On y perd en confort par contre, les applications ne se lançant plus automatiquement. Mais au moins tout fonctionne, peu importe le matériel et l’émulateur choisi lors du test.

Voici la solution (en images) pour ceux qui y seraient confrontés :


Sélectionner Edit Configurations…


Choisir Launch -> Nothing.

Le problème apparaissait lorsque Default Activity était sélectionné…