Как мы можем сделать так, чтобы действие setLaunchDisplayId() было ландшафтным?
В этом примере проекта мойMainActivity
есть код для запуска отдельного действия на внешнем дисплее, используя setLaunchDisplayId()
на ActivityOptions
:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
getSystemService(DisplayManager::class.java)
.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION)
.firstOrNull()
?.let { display ->
Intent(this, ExternalDisplayActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
.let { intent ->
ActivityOptions.makeBasic()
.setLaunchDisplayId(display.displayId)
.toBundle()
.let { opts ->
startActivity(intent, opts)
}
}
}
}
}
ExternalDisplayActivity
нормально запускается на внешний дисплей. Однако; он отображается в портретном режиме, а не в альбомном. Это происходит как с использованием реального монитора, так и смоделированного внешнего дисплея из параметров разработчика в настройках.
Как ни странно, это происходит несмотря на то, что у меня android:screenOrientation="landscape"
на ExternalDisplayActivity
запись манифеста, и я запрашиваю ландшафт во время выполнения:
class ExternalDisplayActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_external)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
}
пейзаж работает, если я использую Presentation
и этот более старый API, но я не могу понять, как заставить ландшафт работать с setLaunchDisplayId()
маршрут.