Android TV не запускается правильно

У меня есть приложение, которое должно работать как на телефоне, так и на телевизоре. В манифесте я указываю активность запуска телефона с

<activity
    android:name=".view.phone.MainActivity"
    android:launchMode="singleTop"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

и запуск телевидения с

<activity
    android:name=".view.leanback.MainActivity"
    android:launchMode="singleTop"
    android:label="@string/app_name"
    android:screenOrientation="landscape" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
</activity>

Instead of filtering between LAUNCHER & LEANBACK_LAUNCHER, on either device it just goes with whichever activity is declared first in the manifest. Есть идеи, что я делаю не так?

3 ответа

Решение

Решением для меня было создать 2 конфигурации запуска следующим образом:

новые конфигурации

Как настроить

Для тех, кто все еще сталкивается с этой проблемой в 2022 году. Хитрость заключается в том, что запуск приложения в Android Studio ведет себя не так, как при развертывании реального файла apk на реальном устройстве. Итак, ваши шаги:

  1. Делайте все правильно в манифесте, как сказано в официальных документах
  2. Расслабьтесь и кодируйте.

Android Studio запускается всегда первым: активность с фильтрами DEFAULT & LAUNCHER или LEANBACK_LAUNCHER. Если флаг ПО УМОЛЧАНИЮ не установлен, AS просто захватит первую активность запуска, упомянутую в манифесте. Это связано с тем, что AS не может определить, на каком устройстве выполняется развертывание . Вы можете убедиться, что ваше приложение будет правильно переключать активность запуска для соответствующего устройства, создав файл apk и установив его вручную . Вот так я все это раскрыл.

Только для целей разработки вы можете либо изменить порядок действий запуска в манифесте (плохой способ), либо сделать отдельные конфигурации запуска/отладки, как описано здесь (хороший способ)

Вы используете то же имя активности MainActivity позвонить как на телевизор, так и на телефон. Измените одно из этих имен, и у вас все получится. Как показано здесь на первом шаге, имя вашей активности для телевизора должно отличаться от имени вашей активности для телефонного приложения.

Другие вопросы по тегам