A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Política de lançamento de atividades
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O comportamento de inicialização da atividade é definido pelos modos de inicialização nos
arquivos AndroidManifest.xml
de apps, flags de intent e ActivityOptions
fornecidos pelo autor da chamada. Use ActivityOption#setLaunchDisplayId(int)
para
segmentar uma tela específica para a inicialização da atividade.
- Por padrão, a atividade é iniciada na mesma tela que a autora da chamada.
Por exemplo, uma nova instância de uma atividade iniciada pelo iniciador precisa ser
colocada na mesma tela sem sinalizações ou opções adicionais. Use o contexto
correto (atividade versus aplicativo) para iniciar.
- Se a inicialização for realizada de uma fonte não associada a uma tela específica
(como de um shell ou contexto do app), a atividade será colocada na tela superior
em que o usuário interagiu pela última vez com o dispositivo ou em que a última atividade foi
iniciada.
- A intent para iniciar uma atividade pode ser resolvida para uma instância de atividade
existente no sistema. Nesse caso, se nenhuma flag adicional for fornecida, uma
atividade será mostrada na mesma tela em que foi usada pela última vez. Se a tela de destino
for especificada com
ActivityOptions#setTargetDisplayId()
, a
atividade será movida para essa tela (se permitida pela segurança e outras restrições).
Restrições de segurança
Para evitar que um app malicioso se aproprie indevidamente de informações sensíveis do usuário
lendo-as da superfície de uma tela virtual criada por ele, os apps podem
iniciar as próprias atividades somente em uma tela virtual de criação
no Android 10. No entanto:
- Os componentes do sistema com a permissão
INTERNAL_SYSTEM_WINDOW
podem ser iniciados em qualquer tela.
- Os autores de chamadas com a permissão
ACTIVITY_EMBEDDING
podem iniciar
atividades de outros apps que têm a flag ActivityInfo.FLAG_ALLOW_EMBEDDED
.
- O lançamento de atividades em telas particulares é permitido apenas para o proprietário ou
atividades presentes nessa tela.
Restrições semelhantes se aplicam à adição de janelas às telas.
O Android 10 inclui o
método ActivityManager#isActivityStartAllowedOnDisplay(Context context, int
displayId, Intent intent)
para verificar as restrições de segurança do
app antes de tentar iniciar em uma tela. No Android 9
(e versões mais antigas), os resultados de inicialização restritos geram SecurityException
.
A maioria das restrições de segurança é aplicada no
método ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Activity launch policy\n\n*Activity launch behavior* is defined by launch modes in the\n`AndroidManifest.xml` files of apps, intent flags, and ActivityOptions\nprovided by the caller. Use `ActivityOption#setLaunchDisplayId(int)` to\ntarget a specific display for activity launch.\n\n- By default, the activity launches on the same display as the caller. For example, a new instance of an activity started from the launcher should be placed on the same display without additional flags or options. Be sure to use the correct context (Activity versus Application) for launch.\n- If the launch is performed from a source not associated with a specific display (such as from a shell or Application context), then the activity is placed on the top display on which the user last interacted with the device or from which the last activity was launched.\n- Intent to launch an activity can be resolved to an existing activity instance in the system. In such a case, if no additional flags were provided, an activity surfaces on the same display where it was last used. If the target display is specified with `ActivityOptions#setTargetDisplayId()`, then the activity is moved to that display (if allowed by security and other restrictions).\n\nSecurity restrictions\n---------------------\n\nTo prevent a malicious app from misappropriating user-sensitive information\nby reading it from the surface of a virtual display that it has created, apps can\nlaunch their own activities *only* on a virtual display of their creation\nin Android 10. However:\n\n- System components with the `INTERNAL_SYSTEM_WINDOW` permission can launch on any display.\n- Callers with the `ACTIVITY_EMBEDDING` permission can launch activities from other apps that have the flag `ActivityInfo.FLAG_ALLOW_EMBEDDED`.\n- Activity launches on private displays are allowed only for the owner or activities present on that display.\n\nSimilar restrictions apply to adding windows to displays.\n\nAndroid 10 includes the\n`ActivityManager#isActivityStartAllowedOnDisplay(Context context, int\ndisplayId, Intent intent)` method to check security restrictions for the\napp before attempting to launch on a display. In Android 9\n(and lower), restricted launch results throw `SecurityException`.\n\nMost security restrictions are applied in the\n`ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()` method."]]