Sei que, para capturar capturas de tela do meu telefone, todos os aplicativos de captura de tela exigem que eu tenha um telefone root. Porque isto é assim? Por que não podemos ter um aplicativo de captura de tela simples para Android, assim como temos para Windows?
screenshots
Cheok Yan Cheng
fonte
fonte
Respostas:
A resposta é bastante simples, é uma questão de permissões.
O Android usa o que é chamado de buffer de estrutura para a exibição do vídeo. O framebuffer está localizado em / dev / graphics / fb0. esse "arquivo", que é basicamente um fluxo no qual o dispositivo grava quando ocorrem alterações na interface do usuário, contém ~ 2 quadros da exibição na tela.
As permissões no arquivo framebuffer são
rw- rw- ---
. Observe que o último "grupo" possui 3 "-" 's. Isso significa basicamente que, se você não é oowner
(que é root), não tem permissão para ler esse arquivo.Se houvesse um aplicativo instalado no sistema, que pudesse fazer capturas de tela, ele teria permissão para ler no framebuffer. Creio que é assim que o Motorola Xoom é capaz de tirar screenshots. Possui um aplicativo instalado no dispositivo, como um aplicativo do sistema.
Ler o buffer de quadros, para um desenvolvedor, é realmente simples, se eles tiverem acesso para lê-lo.
fonte
r--
. Isso pode criar um risco de segurança se qualquer aplicativo puder espionar sua tela, mas não seria apenas uma das permissões ( este aplicativo pode monitorar sua tela ) que você deve aceitar antes de instalar? Isso ou o Google deve adicionar uma captura de tela integrada no menu suspenso, para que ninguém mais acesse. Este último pode ser o meu caso, quero dizer que agora eles estão adicionando uma visualização de impressão ao Chrome.Devido ao foco de segurança do Android em separar todos os aplicativos dos dados uns dos outros, para impedir que aplicativos maliciosos roubem ou alterem dados em aplicativos confiáveis, eles não podem permitir que um aplicativo faça capturas de tela de outros aplicativos.
Pense em quantos aplicativos são capazes de fazer coisas como OCR para traduzir imagens em texto. Posso pensar em pelo menos quatro aplicativos no meu telefone que podem fazer isso. O principal exemplo são os títulos de livros do Google Goggles OCRing, e também OCRing e, em seguida, tradução de blocos de texto em idiomas estrangeiros. Agora pense em quantos aplicativos colocam texto na tela que você não deseja que um aplicativo não confiável veja. Eu tenho um aplicativo de banco de dados de senha no meu telefone com um banco de dados criptografado de minhas senhas para vários sistemas, um aplicativo de proteção de tela malicioso pode esperar até que o aplicativo de senha seja executado, tire uma foto da tela com os detalhes de login, depois faça o OCR e envie-os. Também pode fazer o mesmo para tudo na sua lista de contatos, mesmo se você não der permissão ao aplicativo para o banco de dados de contatos ou o histórico do navegador, ou registros de bate-papo e assim por diante. Essa é apenas uma maneira de abusar do acesso à sua tela.
É por isso que, para que a captura de tela seja universal, ela precisa estar no sistema operacional (no qual você já confia com todos os seus dados). É por isso que nos telefones que possuem a função de captura de tela embutida, ela foi adicionada como parte do sistema, não como um aplicativo separado.
Se você torcer o telefone e permitir que um aplicativo faça capturas de tela, estará efetivamente dizendo que confia implicitamente nesse aplicativo para poder fazer tudo o que o sistema pode fazer, incluindo acessar e interferir em outros aplicativos e seus dados, e que você confie totalmente para não abusar desse acesso. Isso não é algo que o Android permita que algo, exceto o Sistema / SO, faça.
fonte
Resposta curta: como 1) os computadores são complicados e 2) a funcionalidade da captura de tela não é realmente muito simples (para o programador, não para o usuário).
Em outras palavras, fazer uma captura de tela requer que o processo de captura de tela se encaixe profundamente nos componentes internos do sistema operacional, mexa um pouco com eles e solte novamente. Como o Android tenta ter um modelo de segurança interno (em oposição ao "pensamento tardio" visto no Windows), faça uma captura de tela em várias barreiras de segurança. Eles podem ser contornados, mas a única maneira prática atualmente (exceto criar buracos - e possíveis vulnerabilidades - no kernel) é usar a conta raiz todo-poderosa, que não está sujeita às limitações.
fonte