Como funciona o bloqueio de chamadas no Android: A API CallScreeningService explicada
Todo app de bloqueio de chamadas sério no Android — não só o Peace Shield, mas praticamente qualquer concorrente legítimo — é construído sobre a mesma peça fundamental de infraestrutura: a API CallScreeningService. Entender como ela funciona ajuda a explicar por que alguns apps bloqueiam chamadas quase instantaneamente enquanto outros deixam o telefone tocar uma vez antes de desligar — e por que isso importa para sua privacidade.
O que é a CallScreeningService?
CallScreeningService é uma classe abstrata do Android SDK, introduzida no Android 8.0 (Oreo, API 26), que qualquer app pode implementar para se registrar como um "app de triagem de chamadas". Uma vez que o usuário concede esse papel ao app (via Configurações > Apps > Apps padrão > Triagem de chamadas, ou pelo próprio fluxo de permissões do app), o sistema Android passa a chamar o método onScreenCall() desse app toda vez que uma ligação chega — antes de tocar, antes de vibrar, antes de qualquer notificação visual.
O app então responde com um objeto CallResponse, que pode conter combinações de: setDisallowCall(true) (recusa a chamada), setRejectCall(true) (rejeita explicitamente, como apertar "recusar"), e setSkipNotification(true) (evita que o Android mostre uma notificação de chamada perdida para número bloqueado).
Como ela bloqueia antes da primeira vibração
A diferença crucial em relação a abordagens antigas (pré-Android 8.0) é o momento em que a decisão acontece. Antes, um app só conseguia "ouvir" o estado da chamada através do PhoneStateListener e, ao detectar uma chamada tocando, chamar métodos para desligá-la — mas nesse intervalo, por menor que fosse, o telefone já havia tocado ou vibrado brevemente.
Com CallScreeningService, a avaliação acontece antes de qualquer sinal chegar ao usuário. Na prática, isso significa uma resposta em poucos milissegundos: o sistema aciona onScreenCall(), o app compara o número recebido com a agenda de contatos (e com listas de exceção configuradas), e devolve a decisão — tudo isso antes que você perceba que o telefone tocou.
Diferença entre bloqueio na nuvem e bloqueio local
Aqui está a decisão de arquitetura que mais separa apps de bloqueio de chamadas entre si: onde a comparação acontece.
- Bloqueio em nuvem: o app envia o número recebido para um servidor remoto, que consulta um banco de dados de spam conhecido e devolve uma classificação. Isso exige conexão com a internet no momento exato da chamada, adiciona latência de rede à decisão, e — o ponto mais delicado — significa que cada número que liga para você passa por um servidor de terceiros.
- Bloqueio local (on-device): toda a comparação acontece no próprio aparelho, usando a agenda de contatos e regras configuradas localmente. Não há latência de rede, não há dependência de internet, e nenhum dado sobre quem está ligando para você sai do celular.
O Peace Shield opta inteiramente pelo modelo local — veja o raciocínio completo por trás dessa escolha em processamento local.
Por que isso importa para a sua privacidade
Cada chamada recebida contém informação sensível: o número de quem está ligando, o horário, a frequência. Num modelo em nuvem, essa informação passa por servidores de terceiros a cada ligação — mesmo que a empresa prometa não guardar os dados, tecnicamente eles transitaram por fora do seu controle. Num modelo local, essa informação nunca sai do aparelho, o que é uma garantia estrutural, não uma promessa de política de privacidade.
FAQ
A CallScreeningService funciona em segundo plano o tempo todo? Não. O sistema Android só invoca o app no momento exato em que uma chamada chega — não há monitoramento contínuo consumindo bateria ou CPU entre uma ligação e outra.
Qualquer app pode virar app de triagem de chamadas?
Tecnicamente sim, desde que declare a CallScreeningService no manifesto e o usuário conceda esse papel explicitamente. Só pode haver um app de triagem de chamadas ativo por vez no aparelho.
O que acontece se eu tiver dois apps de bloqueio instalados?
Apenas o app definido como padrão nas configurações do sistema recebe as chamadas via CallScreeningService. Ter dois instalados não bloqueia em dobro — apenas um deles efetivamente atua.
Isso substitui completamente a triagem manual (atender e desligar)? Sim, para os casos cobertos pelas regras configuradas. Números fora da agenda (ou fora de uma lista de exceções) nunca chegam a tocar, então não há necessidade de atender para identificar quem está ligando.