A partir do Android 13, o sistema mostra uma confirmação visual padrão ao adicionar conteúdo à área de transferência. A nova confirmação faz o seguinte:
- Confirma que o conteúdo foi copiado.
- Oferece uma visualização do conteúdo copiado.
No Android 12L (API de nível 32) e versões anteriores, muitas vezes os usuários não tinham certeza se o conteúdo havia sido copiado.
Esse recurso padroniza as várias notificações exibidas pelos apps após copiar um conteúdo e oferece aos usuários mais controle sobre a área de transferência.


Evitar notificações duplicadas
Para não mostrar informações duplicadas, recomendamos que você remova as notificações pop-up exibidas quando o usuário copia um conteúdo no app no Android 13 e versões mais recente.


Exemplo
Para evitar a exibição de uma IU duplicada de confirmação de cópia no Android 13, experimente usar um código como do exemplo a seguir:
fun textCopyThenPost(textCopied:String) {
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
// When setting the clip board text.
clipboardManager.setPrimaryClip(ClipData.newPlainText("", textCopied))
// Only show a toast for Android 12 and lower.
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2)
Toast.makeText(context, “Copied”, Toast.LENGTH_SHORT).show()
}
Não é necessário incluir uma mensagem pop-up depois de copiar o texto para a área de transferência no Android 13 e versões mais recentes.
Adicionar conteúdo sensível à área de transferência
Se o app permitir que os usuários copiem conteúdo sensível para a área de transferência, como senhas ou dados
de cartões de crédito, adicione uma sinalização à ClipDescription
do
ClipData antes de chamar ClipboardManager#setPrimaryClip()
.
Essa sinalização impede que conteúdo sensível seja exibido na
visualização.


Para sinalizar a presença de conteúdo sensível, adicione um booleano extra à ClipDescription
.
Isso precisa ser feito por todos os apps, independentemente do nível desejado da API.
// When your app targets API level 33 or higher
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
}
}
// If your app targets a lower API level
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean("android.content.extra.IS_SENSITIVE", true)
}
}