AndroidManifest能否配置LAUNCHER与LEANBACK_LAUNCHER?TV启动异常排查
Android 手机与TV端启动Activity配置问题解答
1. 能否同时配置LAUNCHER与LEANBACK_LAUNCHER启动Activity?
可以同时配置,但必须通过设备特性过滤区分不同设备的启动入口,否则系统会因识别到多个启动项,优先选择优先级更高的LAUNCHER对应的Activity,导致不符合预期的启动行为。
2. TV模拟器仍启动手机端Activity的解决方法
你当前的配置未添加设备类型过滤,TV设备会同时识别LAUNCHER和LEANBACK_LAUNCHER两个启动入口,最终优先启动手机端的LandingScreenActivity。只需给两个Activity分别添加设备适配的特性过滤即可解决:
修改后的AndroidManifest.xml配置
<!-- 手机端启动Activity --> <activity android:name=".ui.login.LandingScreenActivity" android:exported="true" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- 仅在带触摸屏的非TV设备上生效 --> <uses-feature android:name="android.hardware.touchscreen" android:required="true" /> </activity> <!-- TV端启动Activity --> <activity android:name=".ui.tv.TVMainActivity" android:configChanges="keyboard|keyboardHidden|navigation" android:exported="true" android:launchMode="singleTask" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> <!-- 仅在支持Leanback的TV设备上生效 --> <uses-feature android:name="android.software.leanback" android:required="true" /> </activity>
核心逻辑说明
- 手机端Activity通过
android.hardware.touchscreen特性过滤,TV设备无触摸屏,会自动忽略该启动入口。 - TV端Activity通过
android.software.leanback特性过滤,普通手机不支持该特性,会自动忽略TV端启动入口。 - 若TV模拟器仍有问题,需确认模拟器已开启Leanback环境支持,部分老旧模拟器可能不满足该特性要求。
内容的提问来源于stack exchange,提问作者karu6500
相关产品推荐
相关产品推荐

