如何让应用为 Android TV 使用不同的横幅?

问题描述

应用使用横幅的方式如下:

<application
    ...
    android:banner="@mipmap/ic_launcher" >
    ...
</application>

Android Studio 的 Asset Studio 用于创建横幅:

enter image description here

它完全按预期工作。

由于 Android TV 应用对横幅的要求不同,有没有办法只为 Android TV 指定横幅而不影响其他设备?

[编辑]

我很欣赏建议使用不同活动的答案。当前的发布活动非常适合电视。我想使用相同的活动。我一直在寻找一种方法来允许应用程序在 Android TV 上自动使用一组不同的资源。如果这是不可能的,我将通过创建一个自动切换到原始启动活动的虚拟活动来回答。

解决方法

第 1 步:为 Android TV 创建一个单独的 Activity

第 2 步:使用 标记为该活动提供默认横幅

<activity
 ...
android:banner="@mipmap/ic_launcher">
</activity>
,

正如 official documentation 所述,我引用:

使用带有 <application> 标签的 android:banner 属性来提供 所有应用程序活动的默认横幅,或带有 <activity> 标记为特定活动提供横幅。

您可以使用 <activity> 标签来使用不同的横幅。

,

移动设备使用图标而电视设备使用横幅,因此您可以将它们指向单独的资源:

<application
    android:icon="@mipmap/ic_launcher"
    android:banner="@mipmap/ic_app_banner"
    ...
,

所有的答案都给了我一些提示。这是我已被 Google Play 接受的最终解决方案。 在 AndroidManifest.xml 中,为应用程序标签指定手机和平板电脑的图标。 (android:icon="@mipmap/ic_launcher")。它必须完成。否则,the app would crash

<application
    android:name="androidx.multidex.MultiDexApplication"
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_launcher_round"
    android:largeHeap="true"
    android:requestLegacyExternalStorage="true"
    android:usesCleartextTraffic="true"
    tools:replace="android:theme,android:label">

这是关键:启动器活动的活动标签中的 android:icon="@mipmap/ic_launcher_round" 手机和平板电脑和 android:banner="@mipmap/ic_banner" 用于 Android TV:

<activity
    android:name=".OnviferActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:icon="@mipmap/ic_launcher_round"
    android:banner="@mipmap/ic_banner"
    android:label="@string/app_name"
    android:screenOrientation="@integer/screen_orientation">

手机和平板电脑将使用 ic_launcher_round,而 Android TV 将自动使用 ic_banner。