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.
Tela de bloqueio
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A implementação padrão da AOSP da tela de bloqueio com recursos para desbloqueá-la (tela de bloqueio) aparece apenas na tela principal. No Android 9 (e versões anteriores),
as telas secundárias ofereciam suporte a uma única janela de bloqueio em uma única tela
externa. No Android 10, a tela de bloqueio é expandida para todas as telas secundárias
públicas. A tela de bloqueio continua simples e não oferece suporte para desbloqueio de telas
secundárias.

Figura 1. Tela de bloqueio na tela secundária
Os fabricantes de dispositivos podem implementar a tela de bloqueio para telas secundárias,
desde que o requisito de segurança fundamental seja atendido. Quando o dispositivo
está bloqueado, as informações precisam ser ocultas em todas as telas. Não há
políticas nem controles integrados sobre o conteúdo que deve ser mostrado ou ocultado quando o dispositivo
está bloqueado. Portanto, a única maneira segura de implementar o acesso restrito é
ocultar todo o conteúdo por trás da tela de bloqueio e das janelas de bloqueio. As únicas exceções
são apps que optaram explicitamente por aparecer na parte de cima da tela de bloqueio
usando os métodos
R.attr.showWhenLocked
ou
Activity.setShowWhenLocked()
.
Caso contrário, há um grande potencial de vazamento de informações de telas públicas e
privadas.
Embora as telas possam ser colocadas em estados diferentes (ON
/OFF
),
o estado bloqueado é global para todas as telas. Como em qualquer implementação de dispositivo, é necessário
que o usuário saiba quando um dispositivo está bloqueado (ou desbloqueado). Por exemplo, pressionar
um botão liga/desliga normalmente bloqueia um dispositivo móvel. Um botão liga/desliga também precisa bloquear todas
as telas internas e externas.
Como a janela de bloqueio pertence ao SystemUI, ela não é colocada em
telas privadas. Os proprietários das telas particulares são responsáveis por ocultar
as janelas e proteger o conteúdo quando um dispositivo está bloqueado. A implementação padrão do sistema
só oculta atividades em telas privadas mudando a
visibilidade.
Implementação
A janela de bloqueio em telas secundárias é implementada como uma janela
de apresentação em KeyguardDisplayManager
. O Android 10 mudou
KeyguardDisplayManager#mPresentations
para uma matriz que contém todas
as janelas de bloqueio de todas as telas secundárias. KeyguardDisplayManager
também
tem um listener de mudança de tela para responder a mudanças nas telas disponíveis e
proteger todas as telas. É importante bloquear imediatamente todas as telas conectadas
a qualquer momento para que os invasores não extraiam dados do usuário, mesmo com acesso físico
ao dispositivo.
A janela de bloqueio é exibida em todas as telas secundárias públicas (consulte
KeyguardDisplayManager#isKeyguardShowable()
). Os proprietários de telas
privadas são responsáveis por proteger o conteúdo quando um dispositivo está
bloqueado.
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,["# Lock screen\n\nAOSP's default implementation of the Lock screen with affordances to unlock\nit (keyguard) appears only on the primary display. In Android 9 (and lower),\nsecondary screens supported a single *locking window* on a single external\ndisplay. In Android 10, the Lock screen is expanded to all public secondary\ndisplays. The Lock screen remains simple and doesn't support unlocking from secondary\nscreens.\n\n**Figure 1.** Lock screen on secondary display\n\nDevice manufacturers can implement their Lock screen for secondary displays,\nprovided the fundamental security requirement is fulfilled. When the device is\nlocked, information should be securely concealed on all displays. There's no\nbuilt-in policy or control over what content should be shown or hidden when device\nis locked. Therefore, the only secure way of implementing restricted access is to\nhide all content behind the Lock screen and locking windows. The only exceptions\nare apps that have explicitly opted in to be displayed on top of the Lock screen\nusing the\n[R.attr.showWhenLocked](https://developer.android.com/reference/android/R.attr.html#showWhenLocked) or\n[Activity.setShowWhenLocked()](https://developer.android.com/reference/android/app/Activity.html#setShowWhenLocked(boolean)) methods.\nOtherwise, there is strong potential to leak information from public and private\ndisplays.\n\nWhile displays can be placed in to different states (`ON`/`OFF`),\nthe locked state is global for all displays. As with any device implementation, it should\nbe obvious to a user when a device is locked (or unlocked). For example, pressing\na power button typically locks a mobile device. A power button should also lock all\ninternal and external screens.\n\nBecause the locking window is owned by SystemUI, it won't be placed on\nprivate displays. Owners of the private displays are responsible for hiding\nthe windows and protecting content when a device is locked. The default system\nimplementation *only* hides activities on private displays by changing\nvisibility.\n\nImplementation\n--------------\n\nThe locking window on secondary displays is implemented as a [Presentation](https://developer.android.com/reference/android/app/Presentation)\nwindow in `KeyguardDisplayManager`. Android 10 changed\n`KeyguardDisplayManager#mPresentations` to an array that holds all\nlocking windows for all secondary screens. `KeyguardDisplayManager` also\nhas a display-change listener to respond to changes to the available displays and\nsecure all screens. It's important to immediately lock all connected displays at\nany given time so that attackers can't extract user data even with physical access\nto the device.\n\nThe locking window is displayed on all public secondary displays (see\n`KeyguardDisplayManager#isKeyguardShowable()`). Owners of private\ndisplays are responsible for securing the content when a device is\nlocked."]]