Para demonstrar esta
capacidade, escolhemos a utilização das Activities, apresentando exemplos
práticos, evidenciando pontos positivos e negativos de algumas escolhas e
complementando este estudo com a fundamentação teórica do funcionamento do
sistema de permissões e principais aspectos relacionados à camada de segurança
da plataforma Android. Este isolamento criado pelo sistema operacional é o que
conhecemos como sandbox, que é o ponto chave de segurança da plataforma. Estas
configurações garantem que cada aplicação tenha acesso limitado aos recursos da
plataforma e que não agrida a privacidade de outras aplicações.
Não é mandatório que aplicações mobile disponibilizem soluções isoladas. É possível pensar na exploração dessas aplicações como serviços e explorar a maior capacidade do hardware dos smartphones e de seus novos canais de comunicação tornando viável a exploração de novas funcionalidades.
Intuitivamente, durante o desenvolvimento, já fazemos isto o tempo todo com o sistema operacional Android e é possível também ter estas trocas de informações entre aplicações.
Mas devemos estar atentos com esta comunicação entre soluções mobile, por várias razões, principalmente no que se refere à segurança das informações manipuladas e/ou armazenadas pelo aplicativo.
É fácil justificar que a comunicação entre aplicações deve ser viabilizada apenas quando realmente é necessário ou vantajoso do ponto de vista comercial. Caso contrário, haverá grandes possibilidades de termos comportamentos não esperados na solução, que pode impactar comercialmente este produto; e este é sempre o pior impacto!
A plataforma Android disponibiliza bastantes recursos para troca de informações entre aplicações, como: Activities, Intents, Broadcast Receiver, Services etc. e todos estes recursos são protegidos pela arquitetura de segurança implementada na plataforma Android e de seu sistema de permissões que valida ou não o acesso a estes recursos.
Porém, os comportamentos de cada um destes recursos devem ser entendidos e conhecidos seus impactos, para que seja possível obter o melhor proveito para disponibilizar a comunicação entre aplicações, permitindo apenas esta comunicação para outras aplicações que realmente são de interesse da solução.
Caso não seja este o foco, então devemos preservar o isolamento das informações manipuladas pelo aplicativo e não sermos surpreendidos pelo comportamento padrão de alguns destes recursos que viabilizam a comunicação entre aplicações.
Neste artigo será apresentado o sistema de permissões da plataforma Android e seu funcionamento, o isolamento (sandbox) das aplicações e recursos de hardware controlados pelo sistema operacional e alguns exemplos de como estes mecanismos do Android podem ser utilizados para trocar informações entre aplicações de forma consciente e segura.
Apresentando o sistema de permissões do Android
O ponto central da arquitetura do sistema operacional Android, sob o aspecto dos recursos de segurança, é que nenhuma aplicação, por padrão, tem autorização para executar qualquer operação que possa ocasionar algum dano ao sistema operacional a outras aplicações ou ao usuário do dispositivo.
Todos os recursos do dispositivo que a aplicação tenha que utilizar, como acesso a recursos de hardware, dados armazenados ou troca de informações entre si devem ser estaticamente declarados no arquivo AndroidManifest.xml(BOX 1) e estas permissões são apresentadas ao usuário durante a instalação.
Toda aplicação Android deve possuir um arquivo
que descreva todos os recursos utilizados, assim como deve possuir informações
que delimitem seu uso como a versão do Android, características do dispositivo
mobile a qual esta aplicação será executada entre outros. O arquivo AndroidManifest.xml
possui esta responsabilidade. Este arquivo é sempre encontrado dentro do
diretório raiz do projeto, durante o desenvolvimento, e depois de empacotado
(apk). Como o próprio nome nos sugere, este arquivo é estruturado
em formato XML e possui tags específicas para declaração de cada recurso utilizado
que devemos informar para a plataforma Android. Com relação à declaração das permissões, é possível
declarar a sua utilização através da tag
<use-permission> conforme exemplo: <uses-permission
android:name=" ...