Na janela avançada, a cena inicial é composta por vários painéis de apps visíveis e interativos simultaneamente, em vez de uma atividade inicial específica. A janela avançada usa uma versão em branco de uma atividade inicial para ser uma barreira de visibilidade para tarefas de várias janelas.
Embora o Assistente de configuração (SUW, na sigla em inglês) seja tratado como uma tarefa inicial, recomendamos que você o configure como parte de um painel para criar experiências iniciais mais consistentes e confiáveis.
Configurar a barreira de visibilidade inicial
Confirme se a atividade de barreira de visibilidade inicial é uma atividade inicial direta que tem uma prioridade maior para o filtro de intent inicial do que a atividade do SUW.
Para saber mais, consulte a plataforma de referência no StubCarLauncher pacote.
Recomendamos que você inclua esse pacote nas suas builds e o instale para todos os usuários.
Configurar o painel do SUW
Recomendamos colocar o SUW em um painel dedicado para processar condições exclusivas e permitir a colocação dedicada fora da tarefa raiz padrão. É possível configurar os limites e a camada desse painel.
Para que o SUW não fique obstruído, recomendamos colocá-lo em uma camada relativamente alta. Esse painel precisa mostrar e ocultar os eventos do sistema de _System_EnterSuwEvent e _System_ExitSuwEvent, respectivamente.
Considere este exemplo de configuração:
<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>
Para se alinhar ao app SUW típico, se o painel do SUW ficar invisível durante a configuração, o controlador enviará um sinal inicial explícito para a atividade do SUW para anunciar que ele está oculto.
Isso resolve instâncias em que o SUW sabia que o usuário estava tentando ocultá-lo consumindo a intent inicial, mas sem ter acesso ao sinal inicial do sistema.
Se você tiver expectativas diferentes para o design do SUW, implemente o comportamento preferido substituindo SetupPanelController por um controlador personalizado.