安卓电视未启动正确的活动

11

我有一个应用程序,应该能够在手机和电视上运行。在清单文件中,我正在指定启动手机的活动:

<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>

在任何设备上,不是在 LAUNCHER 和 LEANBACK_LAUNCHER 之间进行筛选,而是根据清单中首先声明的活动来执行。有什么想法我做错了吗?


在清单文件中是否有以下代码 <uses-feature android:name="android.software.leanback" android:required="false" />? - Gabe Sechan
1
我在我的清单中添加了以下内容以支持Leanback: <!-- 电视所需 --> <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-feature android:name="android.software.leanback" android:required="false" /> - Tim Mutton
你是如何测试你的应用程序的?在模拟器上还是实际的电视上? - random
你最终解决了这个问题吗? - JorgeAmVF
1
@JorgeAmVF,那已经很久以前了,我真的记不清了。可能是因为我正在使用Fire TV(也称为亚马逊版本),它没有使用Leanback过滤器。 - Tim Mutton
很好你提到了这个,因为我正在使用与你类似的模型,我怀疑是模拟器的问题(没有电视可以测试)。 - JorgeAmVF
3个回答

5
我的解决方案是创建两个启动配置,如下所示:

new configurations

How to configure

具体的配置方法请参考上面的截图。

2
对于那些在2022年仍然遇到这个问题的人。 诀窍在于,通过Android Studio运行应用程序与部署真正的apk文件到真实设备时的行为不同。 因此,您需要执行以下步骤:
  1. 按照官方文档中所说,在清单中正确地完成所有操作。
  2. 放松心情并编写代码。

Android Studio始终首先运行具有DEFAULT和LAUNCHER或LEANBACK_LAUNCHER过滤器的活动。如果未设置DEFAULT标志,则AS将只获取在清单中提到的第一个启动器活动。 这是因为AS无法检测到它正在部署到哪种设备。 您可以通过生成apk文件并手动安装来确保您的应用程序将正确切换适当设备的启动器活动。这就是我发现所有这些问题的方法。

仅供开发目的,您可以在清单中切换启动器活动的顺序(不好的方法),或者按照这里所述创建单独的运行/调试配置(好方法)。


我想相信这个,谢谢。 - kirkadev

0

您正在使用相同的Activity名称MainActivity来调用您的电视和手机应用程序。更改其中一个名称,您就可以顺利运行了。如第一步所示here,您的电视活动名称应与您的手机应用程序的活动名称不同。


1
谢谢您的建议,不幸的是那并没有什么区别。 - Tim Mutton
抱歉,能否分享更多的清单文件,以便我们可以看到可能出了什么问题?从我所看到的来看,似乎没有其他错误。 - pointNclick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接