kotlin 我们可以在AndroidManifest.xml中有一个启动器活动和一个lean_back启动器活动吗?

f4t66c6m  于 2023-03-30  发布在  Kotlin
关注(0)|答案(1)|浏览(155)

有没有可能有两个活动,一个在手机上打开,另一个在电视设备上打开?我想有一个单独的手机和电视活动。我在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>
8wtpewkr

8wtpewkr1#

您可以保持一个活动作为启动器。一旦活动打开,您可以检查设备类型。如果设备是电视,那么您可以打开电视屏幕并清除上一个屏幕。

@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 not starting LAUNCH_LEANBACK Activity

相关问题