是否可以有两个活动,一个在手机上打开,另一个在电视设备上打开?我想有一个单独的电话和电视活动。我的 AndroidManifest.xml 中有以下 xml。但是,当我在电视模拟器上运行该应用程序时,它仍然会打开 LandingScreenActivity。
<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>
</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>
</activity>
您可以保留一个活动作为启动器。一旦活动打开,您就可以检查设备类型。如果设备是电视,那么您可以打开电视屏幕并清除之前的屏幕。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_landing_screen);
UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
startActivity(new Intent(this, TVMainActivity.class));
finish();
}
}
您可以检查这个 - Android TV 未启动 LAUNCH_LEANBACK 活动