startActivities для запуска разделенного экрана больше не работает для Android 13

Раньше я запускал разделенный экран с двумя своими действиями, используя следующий код:

      @RequiresApi(28)
    fun launchSplitScreenMode(parent: FragmentActivity, intentTop: Intent, intentBottom: Intent) {
        with(parent) {

            lifecycle.addObserver(object : LifecycleObserver {

                @Suppress("unused")
                @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
                fun onStop() {

                    // Attempt to reset the previous window mode by starting the home activity
                    // after activity is loaded
                    Intent(Intent.ACTION_MAIN)
                        .apply {

                            addCategory(Intent.CATEGORY_HOME)

                            flags = Intent.FLAG_ACTIVITY_NO_ANIMATION or
//                                    Intent.FLAG_ACTIVITY_NEW_TASK or
                                    Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

                        }
                        .let {

                            if (it.isCallable(baseContext)) startActivity(it)

                        }

                    // Lastly we try to start both activities in split screen mode
                    Handler(Looper.getMainLooper()).postDelayed({

                        intentTop.apply {
//                            action = Intent.ACTION_MAIN
                            addCategory(Intent.CATEGORY_LAUNCHER)
                            flags = Intent.FLAG_ACTIVITY_MULTIPLE_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
                        }

                        intentBottom.apply {
//                            action = Intent.ACTION_MAIN
                            addCategory(Intent.CATEGORY_LAUNCHER)
                            flags = Intent.FLAG_ACTIVITY_MULTIPLE_TASK or Intent.FLAG_ACTIVITY_NEW_TASK

                        }

                        val options = ActivityOptionsCompat.makeBasic().toBundle()?.apply {
                            putInt(
                                ActivityOptionsFlags.KEY_LAUNCH_WINDOWING_MODE,
                                ActivityOptionsFlags.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
                            )
                            putInt(
                                ActivityOptionsFlags.KEY_SPLIT_SCREEN_CREATE_MODE,
                                ActivityOptionsFlags.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT
                            )
                        }

                        startActivities(listOf(intentBottom, intentTop).toTypedArray(), options)

                        finish()

                    }, 500L)

                }

            })


            // Launch the top activity to attempt to reset the current window mode.
            // Without this step when activity is already open, it will be launched in a
            // fullscreen window
            intentTop
                .apply {

                    addCategory(Intent.CATEGORY_LAUNCHER)

                    flags = Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS or
                            Intent.FLAG_ACTIVITY_CLEAR_TASK or
                            Intent.FLAG_ACTIVITY_NO_HISTORY or
                            Intent.FLAG_ACTIVITY_NEW_TASK or
                            Intent.FLAG_ACTIVITY_NO_ANIMATION or
                            Intent.FLAG_ACTIVITY_TASK_ON_HOME
                }
                .let {

                    if (it.isCallable(baseContext)) startActivity(it)

                }
        }
    }

Да, это очень сложный и странный процесс, но именно так работает Android. Но теперь это не работает для Android 13. Может ли кто-нибудь сказать мне, как я могу запустить разделенный экран с одного экрана в Android 13?

0 ответов

Другие вопросы по тегам