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?