Android 如何使setLaunchBounds与自由形式的窗口应用程序一起工作?

Android 如何使setLaunchBounds与自由形式的窗口应用程序一起工作?,android,kotlin,multi-window,Android,Kotlin,Multi Window,我正在用Kotlin编写一个Android启动器。它应该以自由模式打开应用程序。我希望下面的代码可以在屏幕的左半部分打开一个应用程序。取而代之的是,它以一半大小打开屏幕中间的应用程序。 有趣的是,当我最大化应用程序时,从概览中我再次将其设置为窗口模式,它确实占据了我使用LaunchBounds设置的区域,即屏幕的左半部分 有什么办法可以让这项工作马上开始吗 private fun launchPackage(context: Context, packageName : String) {

我正在用Kotlin编写一个Android启动器。它应该以自由模式打开应用程序。我希望下面的代码可以在屏幕的左半部分打开一个应用程序。取而代之的是,它以一半大小打开屏幕中间的应用程序。

有趣的是,当我最大化应用程序时,从概览中我再次将其设置为窗口模式,它确实占据了我使用LaunchBounds设置的区域,即屏幕的左半部分

有什么办法可以让这项工作马上开始吗

private fun launchPackage(context: Context, packageName : String) {
    val metrics = getRealDisplayMetrics(context)
    val options = ActivityOptions.makeBasic()
    options.launchBounds = leftSide(metrics)

    val launchIntent = context.packageManager.getLaunchIntentForPackage(packageName)

    context.startActivity(launchIntent, options.toBundle())
}

private fun leftSide(metrics: DisplayMetrics) : Rect {
    val left = 0
    val top = 0
    val right = metrics.widthPixels / 2
    val bottom = metrics.heightPixels

    return Rect(left, top, right, bottom)
}

private fun getRealDisplayMetrics(context: Context): DisplayMetrics {
    val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
    val defaultDisplay = windowManager.defaultDisplay
    val metrics = DisplayMetrics()

    defaultDisplay.getMetrics(metrics)

    return metrics
}