Por que eu devo ler este artigo:Neste artigo é apresentado como aplicações Android podem interagir entre si, compartilhando recursos, provendo serviços etc.

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.

BOX 1. AndroidManifest.xml e declaração de permissões de sistema

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=" ...

Quer ler esse conteúdo completo? Tenha acesso completo