Quais permissões um aplicativo de NFC precisa?
Menos do que as pessoas temem, e a proteção estrutural importa mais que a permissão em si. Um aplicativo vê uma tag que você apresentou de propósito ao celular. Ele não consegue varrer o ambiente, e não consegue ler tags que você não levou até ele.
O aplicativo declara isso
Um aplicativo que usa NFC declara que usa, e a plataforma torna isso visível.
Isso não é tratado como a câmera ou a localização, em que um pedido aparece na primeira vez e você decide. A mecânica difere entre plataformas e nenhuma das duas apresenta isso como uma decisão recorrente.
Isso surpreende quem espera um pedido, e a razão de não haver pedido vale ser entendida em vez de ser motivo de preocupação.
No Android a declaração está no manifesto, em que um aplicativo pede android.permission.NFC e pode exigir o hardware com uma entrada uses-feature, as duas descritas na documentação do Android. A permissão em si nunca é pedida ao usuário. A partir do Android 16, o guia de NFC do Android descreve um aviso na primeira vez que um aplicativo recebe uma tag, que permite ao usuário impedir que esse aplicativo receba tags. A partir do Android 17, um aplicativo que mira um SDK mais recente também tem de proteger com android.permission.DISPATCH_NFC_MESSAGE a atividade que recebe as tags, para que só o serviço de NFC do sistema possa abri-la. A Apple concede o acesso equivalente por uma autorização no aplicativo em vez de por um pedido.
A proteção é estrutural
O NFC funciona a centímetros. Um aplicativo não consegue ler uma tag que não está fisicamente contra o celular, o que quer dizer que ele não consegue varrer um ambiente, uma bolsa ou um bolso a distância.
Toda tag que um aplicativo vê é uma tag que alguém levou de propósito até o celular. Essa é uma garantia mais forte que um diálogo de permissão, porque ela não depende do julgamento de ninguém no momento.
Compare isso com a localização ou o microfone, em que a capacidade genuinamente vai além do que o usuário está fazendo e um pedido é o único controle.
Então a ausência de um pedido reflete a estreiteza da capacidade em vez de um descuido.
O que um aplicativo vê
O conteúdo da tag que você apresentou: os registros e o que eles guardam.
Os dados técnicos: o chip, o tipo de tag, o espaço livre, e o identificador que a tag carrega.
Esse identificador vale uma observação. Ele é estável para uma dada tag, então um aplicativo que lê as suas tags conseguiria reconhecer a mesma tag de novo. Para as suas próprias tags isso é um recurso, e é a razão para pensar antes de tocar numa tag desconhecida com um aplicativo em que você não confia.
O que ele não vê é qualquer coisa sobre tags que você não apresentou, nem qualquer coisa sobre o celular além do que qualquer aplicativo já tem.
Julgar um aplicativo
Pergunte do que ele precisa além do NFC. Uma ferramenta de leitura precisa de muito pouco, e uma que pede contatos, localização e armazenamento está pedindo coisas sem relação com o trabalho dela.
Prefira as ferramentas que leem sem agir, já que é isso que permite examinar uma tag desconhecida em segurança.
Seja mais cuidadoso com as ferramentas de gravação que com as de leitura, porque gravar muda objetos físicos e algumas mudanças são permanentes.
E num aparelho gerenciado, espere que a escolha seja feita por você, já que os administradores costumam restringir o que pode ser instalado.
Perguntas frequentes
Por que nenhum pedido de permissão aparece para o NFC?
Porque a capacidade só alcança uma tag que você apresentou fisicamente. Essa estreiteza é a proteção, então um pedido recorrente acrescentaria pouco. A partir do Android 16, a primeira tag que um aplicativo recebe traz um aviso que oferece impedir que esse aplicativo receba tags, o que é uma escolha sobre o aplicativo e não uma permissão.
Um aplicativo consegue ler tags dentro da minha bolsa?
Não. O NFC funciona a centímetros, então uma tag tem de estar contra o celular. Não existe distância em que isso se torne possível.
Um aplicativo consegue identificar uma tag que ele já viu?
Sim, já que as tags carregam um identificador estável. Para as suas próprias tags isso é útil, e é uma razão para ter cuidado com as desconhecidas.
Um aplicativo de leitura é mais seguro que um de gravação?
Ler não muda nada, enquanto gravar muda um objeto físico e algumas mudanças são permanentes. Trate as ferramentas de gravação com mais cuidado.