问题描述
应用使用横幅的方式如下:
<application
...
android:banner="@mipmap/ic_launcher" >
...
</application>
Android Studio 的 Asset Studio 用于创建横幅:
它完全按预期工作。
由于 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。