Bei der erweiterten Fensterdarstellung besteht die Startseite aus mehreren gleichzeitig sichtbaren und interaktiven App-Feldern anstelle einer bestimmten Startseitenaktivität. Bei der erweiterten Fensterung wird eine leere Version einer Home-Aktivität als Sichtbarkeitssperre für Aufgaben im Mehrfenstermodus verwendet.
Obwohl der Einrichtungsassistent (Setup Wizard, SUW) oft als Home-Aufgabe behandelt wird, empfehlen wir, ihn als Teil eines Panels zu konfigurieren, um einheitlichere und zuverlässigere Home-Erlebnisse zu schaffen.
Sichtbarkeitsbarriere für das Zuhause konfigurieren
Prüfen Sie, ob die Aktivität für die Sichtbarkeitssperre für das Zuhause eine Aktivität für das Zuhause ist, die direkt nach dem Booten ausgeführt wird und eine höhere Priorität für den Intent-Filter für das Zuhause hat als die SUW-Aktivität.
Weitere Informationen finden Sie auf der Referenzplattform im StubCarLauncher-Paket.
Wir empfehlen, dieses Paket in Ihre Builds aufzunehmen und für alle Nutzer zu installieren.
SUW-Bereich konfigurieren
Wir empfehlen, SUW in einem separaten Bereich zu platzieren, um spezielle Bedingungen zu berücksichtigen und eine separate Platzierung außerhalb der Standard-Root-Aufgabe zu ermöglichen. Sie können die Grenzen und die Schichtbildung dieses Bereichs konfigurieren.
Damit die SUW nicht verdeckt wird, empfehlen wir, sie in einer relativ hohen Ebene zu platzieren. In diesem Bereich müssen die Systemereignisse von _System_EnterSuwEvent bzw. _System_ExitSuwEvent angezeigt und ausgeblendet werden.
Hier ein Beispiel für eine Konfiguration:
<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
<TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
<Variant id="@+id/base">
<Layer layer="@integer/suw_panel_layer"/>
<Bounds left="0" top="0" width="100%" height="100%" />
<Background color="@color/suw_panel_background_color" />
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
<Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
<Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
<Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
</Transitions>
</TaskPanel>
...
<Controller id="suw_panel_controller">
<ControllerName>
com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
</ControllerName>
<PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>
Um der typischen SUW-App zu entsprechen, sendet der Controller ein explizites Home-Signal an die SUW-Aktivität, um anzukündigen, dass die SUW ausgeblendet wird, wenn das SUW-Panel während der Einrichtung unsichtbar wird.
Damit werden Fälle behoben, in denen SUW wusste, dass der Nutzer versuchte, SUW zu verbergen, indem er den Home-Intent verwendet, aber keinen Zugriff auf das Home-Signal des Systems hatte.
Wenn Sie andere Erwartungen an das Design der Ersteinrichtung haben, können Sie das gewünschte Verhalten implementieren, indem Sie SetupPanelController durch einen benutzerdefinierten Controller ersetzen.